IyEvdXNyL2Jpbi9lbnYgcGVybAojCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCiMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojCiMgU0hBMjU2IGJsb2NrIHRyYW5zZm9ybSBmb3IgeDg2LiBTZXB0ZW1iZXIgMjAwNy4KIwojIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50IG92ZXIgY29tcGlsZXIgZ2VuZXJhdGVkIGNvZGUgdmFyaWVzIGZyb20KIyAxMCUgdG8gNDAlIFtzZWUgYmVsb3ddLiBOb3QgdmVyeSBpbXByZXNzaXZlIG9uIHNvbWUgtS1hcmNocywgYnV0CiMgaXQncyA1IHRpbWVzIHNtYWxsZXIgYW5kIG9wdGltaXppZXMgYW1vdW50IG9mIHdyaXRlcy4KIwojIE1heSAyMDEyLgojCiMgT3B0aW1pemF0aW9uIGluY2x1ZGluZyB0d28gb2YgUGF2ZWwgU2VtamFub3YncyBpZGVhcywgYWx0ZXJuYXRpdmUKIyBNYWogYW5kIGZ1bGwgdW5yb2xsLCByZXN1bHRlZCBpbiB+MjAtMjUlIGltcHJvdmVtZW50IG9uIG1vc3QgQ1BVcywKIyB+NyUgb24gUGVudGl1bSwgfjQwJSBvbiBBdG9tLiBBcyBmdWxseSB1bnJvbGxlZCBsb29wIGJvZHkgaXMgYWxtb3N0CiMgMTV4IGxhcmdlciwgOEtCIHZzLiA1NjBCLCBpdCdzIGZpcmVkIG9ubHkgZm9yIGxvbmdlciBpbnB1dHMuIEJ1dCBub3QKIyBvbiBQNCwgd2hlcmUgaXQga2lsbHMgcGVyZm9ybWFuY2UsIG5vciBTYW5keSBCcmlkZ2UsIHdoZXJlIGZvbGRlZAojIGxvb3AgaXMgYXBwcm94aW1hdGVseSBhcyBmYXN0Li4uCiMKIyBKdW5lIDIwMTIuCiMKIyBBZGQgQU1EIFhPUC1zcGVjaWZpYyBjb2RlIHBhdGgsID4zMCUgaW1wcm92ZW1lbnQgb24gQnVsbGRvemVyIG92ZXIKIyBNYXkgdmVyc2lvbiwgPjYwJSBvdmVyIG9yaWdpbmFsLiBBZGQgQVZYK3NocmQgY29kZSBwYXRoLCA+MjUlCiMgaW1wcm92ZW1lbnQgb24gU2FuZHkgQnJpZGdlIG92ZXIgTWF5IHZlcnNpb24sIDYwJSBvdmVyIG9yaWdpbmFsLgojCiMgTWF5IDIwMTMuCiMKIyBSZXBsYWNlIEFNRCBYT1AgY29kZSBwYXRoIHdpdGggU1NTRTMgdG8gY292ZXIgbW9yZSBwcm9jZXNzb3JzLgojIChCaWdnZXN0IGltcHJvdmVtZW50IGNvZWZmaWNpZW50IGlzIG9uIHVwY29taW5nIEF0b20gU2lsdmVybW9udCwKIyBub3Qgc2hvd24uKSBBZGQgQVZYK0JNSSBjb2RlIHBhdGguCiMKIyBQZXJmb3JtYW5jZSBpbiBjbG9jayBjeWNsZXMgcGVyIHByb2Nlc3NlZCBieXRlIChsZXNzIGlzIGJldHRlcik6CiMKIwkJZ2NjCWljYwl4ODYgYXNtKCopCVNJTUQJeDg2XzY0IGFzbSgqKikJCiMgUGVudGl1bQk0Ngk1Nwk0MC8zOAkJLQktCiMgUElJSQkJMzYJMzMJMjcvMjQJCS0JLQojIFA0CQk0MQkzOAkyOAkJLQkxNy4zCiMgQU1EIEs4CTI3CTI1CTE5LzE1LjUJCS0JMTQuOQojIENvcmUyCQkyNgkyMwkxOC8xNS42CQkxNC4zCTEzLjgKIyBXZXN0bWVyZQkyNwktCTE5LzE1LjcJCTEzLjQJMTIuMwojIFNhbmR5IEJyaWRnZQkyNQktCTE1LjkJCTEyLjQJMTEuNgojIEl2eSBCcmlkZ2UJMjQJLQkxNS4wCQkxMS40CTEwLjMKIyBIYXN3ZWxsCTIyCS0JMTMuOQkJOS40Ngk3LjgwCiMgQnVsbGRvemVyCTM2CS0JMjcvMjIJCTE3LjAJMTMuNgojIFZJQSBOYW5vCTM2CS0JMjUvMjIJCTE2LjgJMTYuNQojIEF0b20JCTUwCS0JMzAvMjUJCTIxLjkJMTguOQojCiMgKCopCW51bWJlcnMgYWZ0ZXIgc2xhc2ggYXJlIGZvciB1bnJvbGxlZCBsb29wLCB3aGVyZSBhcHBsaWNhYmxlOwojICgqKikJeDg2XzY0IGFzc2VtYmx5IHBlcmZvcm1hbmNlIGlzIHByZXNlbnRlZCBmb3IgcmVmZXJlbmNlCiMJcHVycG9zZXMsIHJlc3VsdHMgYXJlIGJlc3QtYXZhaWxhYmxlOwoKJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKcHVzaChASU5DLCIke2Rpcn0iLCIke2Rpcn0uLi8uLi9wZXJsYXNtIik7CnJlcXVpcmUgIng4NmFzbS5wbCI7CgomYXNtX2luaXQoJEFSR1ZbMF0sInNoYTUxMi01ODYucGwiLCRBUkdWWyQjQVJHVl0gZXEgIjM4NiIpOwoKJHhtbT0kYXZ4PTA7CmZvciAoQEFSR1YpIHsgJHhtbT0xIGlmICgvLURPUEVOU1NMX0lBMzJfU1NFMi8pOyB9CgppZiAoJHhtbSAmJglgJEVOVntDQ30gLVdhLC12IC1jIC1vIC9kZXYvbnVsbCAteCBhc3NlbWJsZXIgL2Rldi9udWxsIDI+JjFgCgkJCT1+IC9HTlUgYXNzZW1ibGVyIHZlcnNpb24gKFsyLTldXC5bMC05XSspLykgewoJJGF2eCA9ICgkMT49Mi4xOSkgKyAoJDE+PTIuMjIpOwp9CgppZiAoJHhtbSAmJiAhJGF2eCAmJiAkQVJHVlswXSBlcSAid2luMzJuIiAmJgoJCWBuYXNtIC12IDI+JjFgID1+IC9OQVNNIHZlcnNpb24gKFsyLTldXC5bMC05XSspLykgewoJJGF2eCA9ICgkMT49Mi4wMykgKyAoJDE+PTIuMTApOwp9CgppZiAoJHhtbSAmJiAhJGF2eCAmJiAkQVJHVlswXSBlcSAid2luMzIiICYmCgkJYG1sIDI+JjFgID1+IC9WZXJzaW9uIChbMC05XSspXC4vKSB7CgkkYXZ4ID0gKCQxPj0xMCkgKyAoJDE+PTExKTsKfQoKJHVucm9sbF9hZnRlciA9IDY0KjQ7CSMgSWYgcHJlLWV2aWN0ZWQgZnJvbSBMMVAgY2FjaGUgZmlyc3Qgc3BpbiBvZgoJCQkjIGZ1bGx5IHVucm9sbGVkIGxvb3Agd2FzIG1lYXN1cmVkIHRvIHJ1biBhYm91dAoJCQkjIDMtNHggc2xvd2VyLiBJZiBzbG93ZG93biBjb2VmZmljaWVudCBpcyBOIGFuZAoJCQkjIHVucm9sbGVkIGxvb3AgaXMgbSB0aW1lcyBmYXN0ZXIsIHRoZW4geW91IGJyZWFrCgkJCSMgZXZlbiBhdCAoTi0xKS8obS0xKSBibG9ja3MuIFRoZW4gaXQgbmVlZHMgdG8gYmUKCQkJIyBhZGp1c3RlZCBmb3IgcHJvYmFiaWxpdHkgb2YgY29kZSBiZWluZyBldmljdGVkLAoJCQkjIGNvZGUgc2l6ZS9jYWNoZSBzaXplPTEvNC4gVHlwaWNhbCBtIGlzIDEuMTUuLi4KCiRBPSJlYXgiOwokRT0iZWR4IjsKJFQ9ImVieCI7CiRBb2ZmPSZEV1AoNCwiZXNwIik7CiRCb2ZmPSZEV1AoOCwiZXNwIik7CiRDb2ZmPSZEV1AoMTIsImVzcCIpOwokRG9mZj0mRFdQKDE2LCJlc3AiKTsKJEVvZmY9JkRXUCgyMCwiZXNwIik7CiRGb2ZmPSZEV1AoMjQsImVzcCIpOwokR29mZj0mRFdQKDI4LCJlc3AiKTsKJEhvZmY9JkRXUCgzMiwiZXNwIik7CiRYb2ZmPSZEV1AoMzYsImVzcCIpOwokSzI1Nj0iZWJwIjsKCnN1YiBCT0RZXzE2XzYzKCkgewoJJm1vdgkoJFQsImVjeCIpOwkJCSMgImVjeCIgaXMgcHJlbG9hZGVkCgkgJm1vdgkoImVzaSIsJkRXUCg0Kig5KzE1KzE2LTE0KSwiZXNwIikpOwoJJnJvcgkoImVjeCIsMTgtNyk7CgkgJm1vdgkoImVkaSIsImVzaSIpOwoJJnJvcgkoImVzaSIsMTktMTcpOwoJICZ4b3IJKCJlY3giLCRUKTsKCSAmc2hyCSgkVCwzKTsKCSZyb3IJKCJlY3giLDcpOwoJICZ4b3IJKCJlc2kiLCJlZGkiKTsKCSAmeG9yCSgkVCwiZWN4Iik7CQkJIyBUID0gc2lnbWEwKFhbLTE1XSkKCSZyb3IJKCJlc2kiLDE3KTsKCSAmYWRkCSgkVCwmRFdQKDQqKDkrMTUrMTYpLCJlc3AiKSk7CSMgVCArPSBYWy0xNl0KCSZzaHIJKCJlZGkiLDEwKTsKCSAmYWRkCSgkVCwmRFdQKDQqKDkrMTUrMTYtOSksImVzcCIpKTsJIyBUICs9IFhbLTddCgkjJnhvcgkoImVkaSIsImVzaSIpCQkJIyBzaWdtYTEoWFstMl0pCgkjICZhZGQJKCRULCJlZGkiKTsJCQkjIFQgKz0gc2lnbWExKFhbLTJdKQoJIyAmbW92CSgmRFdQKDQqKDkrMTUpLCJlc3AiKSwkVCk7CSMgc2F2ZSBYWzBdCgoJJkJPRFlfMDBfMTUoMSk7Cn0Kc3ViIEJPRFlfMDBfMTUoKSB7CiAgICBteSAkaW5fMTZfNjM9c2hpZnQ7CgoJJm1vdgkoImVjeCIsJEUpOwoJICZ4b3IJKCJlZGkiLCJlc2kiKQkJCWlmICgkaW5fMTZfNjMpOwkjIHNpZ21hMShYWy0yXSkKCSAmbW92CSgiZXNpIiwkRm9mZik7Cgkmcm9yCSgiZWN4IiwyNS0xMSk7CgkgJmFkZAkoJFQsImVkaSIpCQkJaWYgKCRpbl8xNl82Myk7CSMgVCArPSBzaWdtYTEoWFstMl0pCgkgJm1vdgkoImVkaSIsJEdvZmYpOwoJJnhvcgkoImVjeCIsJEUpOwoJICZ4b3IJKCJlc2kiLCJlZGkiKTsKCSAmbW92CSgkVCwmRFdQKDQqKDkrMTUpLCJlc3AiKSkJaWYgKCEkaW5fMTZfNjMpOwoJICZtb3YJKCZEV1AoNCooOSsxNSksImVzcCIpLCRUKQlpZiAoJGluXzE2XzYzKTsJIyBzYXZlIFhbMF0KCSZyb3IJKCJlY3giLDExLTYpOwoJICZhbmQJKCJlc2kiLCRFKTsKCSAmbW92CSgkRW9mZiwkRSk7CQkjIG1vZHVsby1zY2hlZHVsZWQKCSZ4b3IJKCRFLCJlY3giKTsKCSAmYWRkCSgkVCwkSG9mZik7CQkjIFQgKz0gaAoJICZ4b3IJKCJlc2kiLCJlZGkiKTsJCSMgQ2goZSxmLGcpCgkmcm9yCSgkRSw2KTsJCQkjIFNpZ21hMShlKQoJICZtb3YJKCJlY3giLCRBKTsKCSAmYWRkCSgkVCwiZXNpIik7CQkjIFQgKz0gQ2goZSxmLGcpCgoJJnJvcgkoImVjeCIsMjItMTMpOwoJICZhZGQJKCRULCRFKTsJCSMgVCArPSBTaWdtYTEoZSkKCSAmbW92CSgiZWRpIiwkQm9mZik7CgkmeG9yCSgiZWN4IiwkQSk7CgkgJm1vdgkoJEFvZmYsJEEpOwkJIyBtb2R1bG8tc2NoZWR1bGVkCgkgJmxlYQkoImVzcCIsJkRXUCgtNCwiZXNwIikpOwoJJnJvcgkoImVjeCIsMTMtMik7CgkgJm1vdgkoImVzaSIsJkRXUCgwLCRLMjU2KSk7CgkmeG9yCSgiZWN4IiwkQSk7CgkgJm1vdgkoJEUsJEVvZmYpOwkJIyBlIGluIG5leHQgaXRlcmF0aW9uLCBkIGluIHRoaXMgb25lCgkgJnhvcgkoJEEsImVkaSIpOwkJIyBhIF49IGIKCSZyb3IJKCJlY3giLDIpOwkJIyBTaWdtYTAoYSkKCgkgJmFkZAkoJFQsImVzaSIpOwkJIyBUKz0gS1tpXQoJICZtb3YJKCZEV1AoMCwiZXNwIiksJEEpOwkjIChiXmMpIGluIG5leHQgcm91bmQKCSZhZGQJKCRFLCRUKTsJCSMgZCArPSBUCgkgJmFuZAkoJEEsJkRXUCg0LCJlc3AiKSk7CSMgYSAmPSAoYl5jKQoJJmFkZAkoJFQsImVjeCIpOwkJIyBUICs9IFNpZ21hMChhKQoJICZ4b3IJKCRBLCJlZGkiKTsJCSMgaCA9IE1haihhLGIsYykgPSBDaChhXmIsYyxiKQoJICZtb3YJKCJlY3giLCZEV1AoNCooOSsxNSsxNi0xKSwiZXNwIikpCWlmICgkaW5fMTZfNjMpOwkjIHByZWxvYWQgVAoJJmFkZAkoJEsyNTYsNCk7CgkgJmFkZAkoJEEsJFQpOwkJIyBoICs9IFQKfQoKJmV4dGVybmFsX2xhYmVsKCJPUEVOU1NMX2lhMzJjYXBfUCIpCQlpZiAoISRpMzg2KTsKCiZmdW5jdGlvbl9iZWdpbigic2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIiKTsKCSZtb3YJKCJlc2kiLHdwYXJhbSgwKSk7CSMgY3R4CgkmbW92CSgiZWRpIix3cGFyYW0oMSkpOwkjIGlucAoJJm1vdgkoImVheCIsd3BhcmFtKDIpKTsJIyBudW0KCSZtb3YJKCJlYngiLCJlc3AiKTsJCSMgc2F2ZWQgc3AKCgkmY2FsbAkoJmxhYmVsKCJwaWNfcG9pbnQiKSk7CSMgbWFrZSBpdCBQSUMhCiZzZXRfbGFiZWwoInBpY19wb2ludCIpOwoJJmJsaW5kcG9wKCRLMjU2KTsKCSZsZWEJKCRLMjU2LCZEV1AoJmxhYmVsKCJLMjU2IikuIi0iLiZsYWJlbCgicGljX3BvaW50IiksJEsyNTYpKTsKCgkmc3ViCSgiZXNwIiwxNik7CgkmYW5kCSgiZXNwIiwtNjQpOwoKCSZzaGwJKCJlYXgiLDYpOwoJJmFkZAkoImVheCIsImVkaSIpOwoJJm1vdgkoJkRXUCgwLCJlc3AiKSwiZXNpIik7CSMgY3R4CgkmbW92CSgmRFdQKDQsImVzcCIpLCJlZGkiKTsJIyBpbnAKCSZtb3YJKCZEV1AoOCwiZXNwIiksImVheCIpOwkjIGlucCtudW0qMTI4CgkmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWJ4Iik7CSMgc2F2ZWQgc3AKCQkJCQkJaWYgKCEkaTM4NikgewoJJnBpY21ldXAoImVkeCIsIk9QRU5TU0xfaWEzMmNhcF9QIiwkSzI1NiwmbGFiZWwoIksyNTYiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDAsImVkeCIpKTsKCSZtb3YJKCJlYngiLCZEV1AoNCwiZWR4IikpOwoJJnRlc3QJKCJlY3giLDE8PDIwKTsJCSMgY2hlY2sgZm9yIFA0Cgkmam56CSgmbGFiZWwoImxvb3AiKSk7CgkmYW5kCSgiZWN4IiwxPDwzMCk7CQkjIG1hc2sgIkludGVsIENQVSIgYml0CgkmYW5kCSgiZWJ4IiwxPDwyOHwxPDw5KTsJIyBtYXNrIEFWWCBhbmQgU1NTRTMgYml0cwoJJm9yCSgiZWN4IiwiZWJ4Iik7CgkmYW5kCSgiZWN4IiwxPDwyOHwxPDwzMCk7CgkmY21wCSgiZWN4IiwxPDwyOHwxPDwzMCk7CgkJCQkJaWYgKCR4bW0pIHsKCSZqZQkoJmxhYmVsKCJBVlgiKSkJCWlmICgkYXZ4KTsKCSZ0ZXN0CSgiZWJ4IiwxPDw5KTsJCSMgY2hlY2sgZm9yIFNTU0UzCgkmam56CSgmbGFiZWwoIlNTU0UzIikpOwoJCQkJCX0gZWxzZSB7CgkmamUJKCZsYWJlbCgibG9vcF9zaHJkIikpOwoJCQkJCX0KCQkJCQkJaWYgKCR1bnJvbGxfYWZ0ZXIpIHsKCSZzdWIJKCJlYXgiLCJlZGkiKTsKCSZjbXAJKCJlYXgiLCR1bnJvbGxfYWZ0ZXIpOwoJJmphZQkoJmxhYmVsKCJ1bnJvbGxlZCIpKTsKCQkJCQkJfSB9Cgkmam1wCSgmbGFiZWwoImxvb3AiKSk7CgpzdWIgQ09NUEFDVF9MT09QKCkgewpteSAkc3VmZml4PXNoaWZ0OwoKJnNldF9sYWJlbCgibG9vcCRzdWZmaXgiLCRzdWZmaXg/MzI6MTYpOwogICAgIyBjb3B5IGlucHV0IGJsb2NrIHRvIHN0YWNrIHJldmVyc2luZyBieXRlIGFuZCBkd29yZCBvcmRlcgogICAgZm9yKCRpPTA7JGk8NDskaSsrKSB7CgkmbW92CSgiZWF4IiwmRFdQKCRpKjE2KzAsImVkaSIpKTsKCSZtb3YJKCJlYngiLCZEV1AoJGkqMTYrNCwiZWRpIikpOwoJJm1vdgkoImVjeCIsJkRXUCgkaSoxNis4LCJlZGkiKSk7CgkmYnN3YXAJKCJlYXgiKTsKCSZtb3YJKCJlZHgiLCZEV1AoJGkqMTYrMTIsImVkaSIpKTsKCSZic3dhcAkoImVieCIpOwoJJnB1c2gJKCJlYXgiKTsKCSZic3dhcAkoImVjeCIpOwoJJnB1c2gJKCJlYngiKTsKCSZic3dhcAkoImVkeCIpOwoJJnB1c2gJKCJlY3giKTsKCSZwdXNoCSgiZWR4Iik7CiAgICB9CgkmYWRkCSgiZWRpIiw2NCk7CgkmbGVhCSgiZXNwIiwmRFdQKC00KjksImVzcCIpKTsjIHBsYWNlIGZvciBBLEIsQyxELEUsRixHLEgKCSZtb3YJKCZEV1AoNCooOSsxNikrNCwiZXNwIiksImVkaSIpOwoKCSMgY29weSBjdHgtPmhbMC03XSB0byBBLEIsQyxELEUsRixHLEggb24gc3RhY2sKCSZtb3YJKCRBLCZEV1AoMCwiZXNpIikpOwoJJm1vdgkoImVieCIsJkRXUCg0LCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDgsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMTIsImVzaSIpKTsKCSMgJm1vdgkoJEFvZmYsJEEpOwoJJm1vdgkoJEJvZmYsImVieCIpOwoJJnhvcgkoImVieCIsImVjeCIpOwoJJm1vdgkoJENvZmYsImVjeCIpOwoJJm1vdgkoJERvZmYsImVkaSIpOwoJJm1vdgkoJkRXUCgwLCJlc3AiKSwiZWJ4Iik7CSMgbWFnaWMKCSZtb3YJKCRFLCZEV1AoMTYsImVzaSIpKTsJCgkmbW92CSgiZWJ4IiwmRFdQKDIwLCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDI0LCJlc2kiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDI4LCJlc2kiKSk7CgkjICZtb3YJKCRFb2ZmLCRFKTsKCSZtb3YJKCRGb2ZmLCJlYngiKTsKCSZtb3YJKCRHb2ZmLCJlY3giKTsKCSZtb3YJKCRIb2ZmLCJlZGkiKTsKCiZzZXRfbGFiZWwoIjAwXzE1JHN1ZmZpeCIsMTYpOwoKCSZCT0RZXzAwXzE1KCk7CgoJJmNtcAkoImVzaSIsMHhjMTliZjE3NCk7Cgkmam5lCSgmbGFiZWwoIjAwXzE1JHN1ZmZpeCIpKTsKCgkmbW92CSgiZWN4IiwmRFdQKDQqKDkrMTUrMTYtMSksImVzcCIpKTsJIyBwcmVsb2FkZWQgaW4gQk9EWV8wMF8xNSgxKQoJJmptcAkoJmxhYmVsKCIxNl82MyRzdWZmaXgiKSk7Cgomc2V0X2xhYmVsKCIxNl82MyRzdWZmaXgiLDE2KTsKCgkmQk9EWV8xNl82MygpOwoKCSZjbXAJKCJlc2kiLDB4YzY3MTc4ZjIpOwoJJmpuZQkoJmxhYmVsKCIxNl82MyRzdWZmaXgiKSk7CgoJJm1vdgkoImVzaSIsJkRXUCg0Kig5KzE2KzY0KSswLCJlc3AiKSk7I2N0eAoJIyAmbW92CSgkQSwkQW9mZik7CgkmbW92CSgiZWJ4IiwkQm9mZik7CgkjICZtb3YJKCJlZGkiLCRDb2ZmKTsKCSZtb3YJKCJlY3giLCREb2ZmKTsKCSZhZGQJKCRBLCZEV1AoMCwiZXNpIikpOwoJJmFkZAkoImVieCIsJkRXUCg0LCJlc2kiKSk7CgkmYWRkCSgiZWRpIiwmRFdQKDgsImVzaSIpKTsKCSZhZGQJKCJlY3giLCZEV1AoMTIsImVzaSIpKTsKCSZtb3YJKCZEV1AoMCwiZXNpIiksJEEpOwoJJm1vdgkoJkRXUCg0LCJlc2kiKSwiZWJ4Iik7CgkmbW92CSgmRFdQKDgsImVzaSIpLCJlZGkiKTsKCSZtb3YJKCZEV1AoMTIsImVzaSIpLCJlY3giKTsKCSMgJm1vdgkoJEUsJEVvZmYpOwoJJm1vdgkoImVheCIsJEZvZmYpOwoJJm1vdgkoImVieCIsJEdvZmYpOwoJJm1vdgkoImVjeCIsJEhvZmYpOwoJJm1vdgkoImVkaSIsJkRXUCg0Kig5KzE2KzY0KSs0LCJlc3AiKSk7I2lucAoJJmFkZAkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJmFkZAkoImVheCIsJkRXUCgyMCwiZXNpIikpOwoJJmFkZAkoImVieCIsJkRXUCgyNCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgyOCwiZXNpIikpOwoJJm1vdgkoJkRXUCgxNiwiZXNpIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNpIiksImVheCIpOwoJJm1vdgkoJkRXUCgyNCwiZXNpIiksImVieCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNpIiksImVjeCIpOwoKCSZsZWEJKCJlc3AiLCZEV1AoNCooOSsxNis2NCksImVzcCIpKTsjIGRlc3Ryb3kgZnJhbWUKCSZzdWIJKCRLMjU2LDQqNjQpOwkJCSMgcmV3aW5kIEsKCgkmY21wCSgiZWRpIiwmRFdQKDgsImVzcCIpKTsJCSMgYXJlIHdlIGRvbmUgeWV0PwoJJmpiCSgmbGFiZWwoImxvb3Akc3VmZml4IikpOwp9CgkmQ09NUEFDVF9MT09QKCk7CgkmbW92CSgiZXNwIiwmRFdQKDEyLCJlc3AiKSk7CQkjIHJlc3RvcmUgc3AKJmZ1bmN0aW9uX2VuZF9BKCk7CgkJCQkJCWlmICghJGkzODYgJiYgISR4bW0pIHsKCSMgfjIwJSBpbXByb3ZlbWVudCBvbiBTYW5keSBCcmlkZ2UKCWxvY2FsICpyb3IgPSBzdWIgeyAmc2hyZChAX1swXSxAXykgfTsKCSZDT01QQUNUX0xPT1AoIl9zaHJkIik7CgkmbW92CSgiZXNwIiwmRFdQKDEyLCJlc3AiKSk7CQkjIHJlc3RvcmUgc3AKJmZ1bmN0aW9uX2VuZF9BKCk7CgkJCQkJCX0KCiZzZXRfbGFiZWwoIksyNTYiLDY0KTsJIyBZZXMhIEkga2VlcCBpdCBpbiB0aGUgY29kZSBzZWdtZW50IQpASzI1Nj0oCTB4NDI4YTJmOTgsMHg3MTM3NDQ5MSwweGI1YzBmYmNmLDB4ZTliNWRiYTUsCgkweDM5NTZjMjViLDB4NTlmMTExZjEsMHg5MjNmODJhNCwweGFiMWM1ZWQ1LAoJMHhkODA3YWE5OCwweDEyODM1YjAxLDB4MjQzMTg1YmUsMHg1NTBjN2RjMywKCTB4NzJiZTVkNzQsMHg4MGRlYjFmZSwweDliZGMwNmE3LDB4YzE5YmYxNzQsCgkweGU0OWI2OWMxLDB4ZWZiZTQ3ODYsMHgwZmMxOWRjNiwweDI0MGNhMWNjLAoJMHgyZGU5MmM2ZiwweDRhNzQ4NGFhLDB4NWNiMGE5ZGMsMHg3NmY5ODhkYSwKCTB4OTgzZTUxNTIsMHhhODMxYzY2ZCwweGIwMDMyN2M4LDB4YmY1OTdmYzcsCgkweGM2ZTAwYmYzLDB4ZDVhNzkxNDcsMHgwNmNhNjM1MSwweDE0MjkyOTY3LAoJMHgyN2I3MGE4NSwweDJlMWIyMTM4LDB4NGQyYzZkZmMsMHg1MzM4MGQxMywKCTB4NjUwYTczNTQsMHg3NjZhMGFiYiwweDgxYzJjOTJlLDB4OTI3MjJjODUsCgkweGEyYmZlOGExLDB4YTgxYTY2NGIsMHhjMjRiOGI3MCwweGM3NmM1MWEzLAoJMHhkMTkyZTgxOSwweGQ2OTkwNjI0LDB4ZjQwZTM1ODUsMHgxMDZhYTA3MCwKCTB4MTlhNGMxMTYsMHgxZTM3NmMwOCwweDI3NDg3NzRjLDB4MzRiMGJjYjUsCgkweDM5MWMwY2IzLDB4NGVkOGFhNGEsMHg1YjljY2E0ZiwweDY4MmU2ZmYzLAoJMHg3NDhmODJlZSwweDc4YTU2MzZmLDB4ODRjODc4MTQsMHg4Y2M3MDIwOCwKCTB4OTBiZWZmZmEsMHhhNDUwNmNlYiwweGJlZjlhM2Y3LDB4YzY3MTc4ZjIJKTsKJmRhdGFfd29yZChASzI1Nik7CiZkYXRhX3dvcmQoMHgwMDAxMDIwMywweDA0MDUwNjA3LDB4MDgwOTBhMGIsMHgwYzBkMGUwZik7CSMgYnl0ZSBzd2FwIG1hc2sKJmFzY2l6KCJTSEEyNTYgYmxvY2sgdHJhbnNmb3JtIGZvciB4ODYsIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iKTsKCigkYSwkYiwkYywkZCwkZSwkZiwkZywkaCk9KDAuLjcpOwkjIG9mZnNldHMKc3ViIG9mZiB7ICZEV1AoNCooKChzaGlmdCktJGkpJjcpLCJlc3AiKTsgfQoKaWYgKCEkaTM4NiAmJiAkdW5yb2xsX2FmdGVyKSB7Cm15IEBBSD0oJEEsJEsyNTYpOwoKJnNldF9sYWJlbCgidW5yb2xsZWQiLDE2KTsKCSZsZWEJKCJlc3AiLCZEV1AoLTk2LCJlc3AiKSk7CgkjIGNvcHkgY3R4LT5oWzAtN10gdG8gQSxCLEMsRCxFLEYsRyxIIG9uIHN0YWNrCgkmbW92CSgkQUhbMF0sJkRXUCgwLCJlc2kiKSk7CgkmbW92CSgkQUhbMV0sJkRXUCg0LCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDgsImVzaSIpKTsKCSZtb3YJKCJlYngiLCZEV1AoMTIsImVzaSIpKTsKCSMmbW92CSgmRFdQKDAsImVzcCIpLCRBSFswXSk7CgkmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkmeG9yCSgkQUhbMV0sImVjeCIpOwkJIyBtYWdpYwoJJm1vdgkoJkRXUCg4LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWJ4Iik7CgkmbW92CSgkRSwmRFdQKDE2LCJlc2kiKSk7CQoJJm1vdgkoImVieCIsJkRXUCgyMCwiZXNpIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyNCwiZXNpIikpOwoJJm1vdgkoImVzaSIsJkRXUCgyOCwiZXNpIikpOwoJIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSZtb3YJKCZEV1AoMjAsImVzcCIpLCJlYngiKTsKCSZtb3YJKCZEV1AoMjQsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMjgsImVzcCIpLCJlc2kiKTsKCSZqbXAJKCZsYWJlbCgiZ3JhbmRfbG9vcCIpKTsKCiZzZXRfbGFiZWwoImdyYW5kX2xvb3AiLDE2KTsKICAgICMgY29weSBpbnB1dCBibG9jayB0byBzdGFjayByZXZlcnNpbmcgYnl0ZSBvcmRlcgogICAgZm9yKCRpPTA7JGk8NTskaSsrKSB7CgkmbW92CSgiZWJ4IiwmRFdQKDEyKiRpKzAsImVkaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMTIqJGkrNCwiZWRpIikpOwoJJmJzd2FwCSgiZWJ4Iik7CgkmbW92CSgiZXNpIiwmRFdQKDEyKiRpKzgsImVkaSIpKTsKCSZic3dhcAkoImVjeCIpOwoJJm1vdgkoJkRXUCgzMisxMiokaSswLCJlc3AiKSwiZWJ4Iik7CgkmYnN3YXAJKCJlc2kiKTsKCSZtb3YJKCZEV1AoMzIrMTIqJGkrNCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgzMisxMiokaSs4LCJlc3AiKSwiZXNpIik7CiAgICB9CgkmbW92CSgiZWJ4IiwmRFdQKCRpKjEyLCJlZGkiKSk7CgkmYWRkCSgiZWRpIiw2NCk7CgkmYnN3YXAJKCJlYngiKTsKCSZtb3YJKCZEV1AoOTYrNCwiZXNwIiksImVkaSIpOwoJJm1vdgkoJkRXUCgzMisxMiokaSwiZXNwIiksImVieCIpOwoKICAgIG15ICgkdDEsJHQyKSA9ICgiZWN4IiwiZXNpIik7CgogICAgZm9yICgkaT0wOyRpPDY0OyRpKyspIHsKCiAgICAgIGlmICgkaT49MTYpIHsKCSZtb3YJKCRULCR0MSk7CQkJIyAkdDEgaXMgcHJlbG9hZGVkCgkjICZtb3YJKCR0MiwmRFdQKDMyKzQqKCgkaSsxNCkmMTUpLCJlc3AiKSk7Cgkmcm9yCSgkdDEsMTgtNyk7CgkgJm1vdgkoImVkaSIsJHQyKTsKCSZyb3IJKCR0MiwxOS0xNyk7CgkgJnhvcgkoJHQxLCRUKTsKCSAmc2hyCSgkVCwzKTsKCSZyb3IJKCR0MSw3KTsKCSAmeG9yCSgkdDIsImVkaSIpOwoJICZ4b3IJKCRULCR0MSk7CQkJIyBUID0gc2lnbWEwKFhbLTE1XSkKCSZyb3IJKCR0MiwxNyk7CgkgJmFkZAkoJFQsJkRXUCgzMis0KigkaSYxNSksImVzcCIpKTsJIyBUICs9IFhbLTE2XQoJJnNocgkoImVkaSIsMTApOwoJICZhZGQJKCRULCZEV1AoMzIrNCooKCRpKzkpJjE1KSwiZXNwIikpOwkjIFQgKz0gWFstN10KCSMmeG9yCSgiZWRpIiwkdDIpCQkJIyBzaWdtYTEoWFstMl0pCgkjICZhZGQJKCRULCJlZGkiKTsJCQkjIFQgKz0gc2lnbWExKFhbLTJdKQoJIyAmbW92CSgmRFdQKDQqKDkrMTUpLCJlc3AiKSwkVCk7CSMgc2F2ZSBYWzBdCiAgICAgIH0KCSZtb3YJKCR0MSwkRSk7CgkgJnhvcgkoImVkaSIsJHQyKQkJCWlmICgkaT49MTYpOwkjIHNpZ21hMShYWy0yXSkKCSAmbW92CSgkdDIsJm9mZigkZikpOwoJJnJvcgkoJEUsMjUtMTEpOwoJICZhZGQJKCRULCJlZGkiKQkJCWlmICgkaT49MTYpOwkjIFQgKz0gc2lnbWExKFhbLTJdKQoJICZtb3YJKCJlZGkiLCZvZmYoJGcpKTsKCSZ4b3IJKCRFLCR0MSk7CgkgJm1vdgkoJFQsJkRXUCgzMis0KigkaSYxNSksImVzcCIpKQlpZiAoJGk8MTYpOwkjIFhbaV0KCSAmbW92CSgmRFdQKDMyKzQqKCRpJjE1KSwiZXNwIiksJFQpCWlmICgkaT49MTYgJiYgJGk8NjIpOwkjIHNhdmUgWFswXQoJICZ4b3IJKCR0MiwiZWRpIik7Cgkmcm9yCSgkRSwxMS02KTsKCSAmYW5kCSgkdDIsJHQxKTsKCSAmbW92CSgmb2ZmKCRlKSwkdDEpOwkJIyBzYXZlICRFLCBtb2R1bG8tc2NoZWR1bGVkCgkmeG9yCSgkRSwkdDEpOwoJICZhZGQJKCRULCZvZmYoJGgpKTsJCSMgVCArPSBoCgkgJnhvcgkoImVkaSIsJHQyKTsJCSMgQ2goZSxmLGcpCgkmcm9yCSgkRSw2KTsJCQkjIFNpZ21hMShlKQoJICZtb3YJKCR0MSwkQUhbMF0pOwoJICZhZGQJKCRULCJlZGkiKTsJCSMgVCArPSBDaChlLGYsZykKCgkmcm9yCSgkdDEsMjItMTMpOwoJICZtb3YJKCR0MiwkQUhbMF0pOwoJICZtb3YJKCJlZGkiLCZvZmYoJGIpKTsKCSZ4b3IJKCR0MSwkQUhbMF0pOwoJICZtb3YJKCZvZmYoJGEpLCRBSFswXSk7CSMgc2F2ZSAkQSwgbW9kdWxvLXNjaGVkdWxlZAoJICZ4b3IJKCRBSFswXSwiZWRpIik7CQkjIGEgXj0gYiwgKGJeYykgaW4gbmV4dCByb3VuZAoJJnJvcgkoJHQxLDEzLTIpOwoJICZhbmQJKCRBSFsxXSwkQUhbMF0pOwkjIChiXmMpICY9IChhXmIpCgkgJmxlYQkoJEUsJkRXUChASzI1NlskaV0sJFQsJEUpKTsJIyBUICs9IFNpZ21hMSgxKStLW2ldCgkmeG9yCSgkdDEsJHQyKTsKCSAmeG9yCSgkQUhbMV0sImVkaSIpOwkJIyBoID0gTWFqKGEsYixjKSA9IENoKGFeYixjLGIpCgkgJm1vdgkoJHQyLCZEV1AoMzIrNCooKCRpKzIpJjE1KSwiZXNwIikpCWlmICgkaT49MTUgJiYgJGk8NjMpOwoJJnJvcgkoJHQxLDIpOwkJIyBTaWdtYTAoYSkKCgkgJmFkZAkoJEFIWzFdLCRFKTsJCSMgaCArPSBUCgkgJmFkZAkoJEUsJm9mZigkZCkpOwkJIyBkICs9IFQKCSZhZGQJKCRBSFsxXSwkdDEpOwkJIyBoICs9IFNpZ21hMChhKQoJICZtb3YJKCR0MSwmRFdQKDMyKzQqKCgkaSsxNSkmMTUpLCJlc3AiKSkJaWYgKCRpPj0xNSAmJiAkaTw2Myk7CgoJQEFIID0gcmV2ZXJzZShAQUgpOwkJIyByb3RhdGUoYSxoKQoJKCR0MSwkdDIpID0gKCR0MiwkdDEpOwkJIyByb3RhdGUodDEsdDIpCiAgICB9CgkmbW92CSgiZXNpIiwmRFdQKDk2LCJlc3AiKSk7CSNjdHgKCQkJCQkjJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNwIikpOwoJJnhvcgkoJEFIWzFdLCJlZGkiKTsJCSMmbW92CSgkQUhbMV0sJkRXUCg0LCJlc3AiKSk7CgkJCQkJIyZtb3YJKCJlZGkiLCAmRFdQKDgsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMTIsImVzcCIpKTsKCSZhZGQJKCRBSFswXSwmRFdQKDAsImVzaSIpKTsKCSZhZGQJKCRBSFsxXSwmRFdQKDQsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoOCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgxMiwiZXNpIikpOwoJJm1vdgkoJkRXUCgwLCJlc2kiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc2kiKSwkQUhbMV0pOwoJJm1vdgkoJkRXUCg4LCJlc2kiKSwiZWRpIik7CgkmbW92CSgmRFdQKDEyLCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMCwiZXNwIiksJEFIWzBdKTsKCSAmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkgJnhvcgkoJEFIWzFdLCJlZGkiKTsJCSMgbWFnaWMKCSAmbW92CSgmRFdQKDgsImVzcCIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWN4Iik7CgkjJm1vdgkoJEUsJkRXUCgxNiwiZXNwIikpOwoJJm1vdgkoImVkaSIsJkRXUCgyMCwiZXNwIikpOwoJJm1vdgkoImVieCIsJkRXUCgyNCwiZXNwIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyOCwiZXNwIikpOwoJJmFkZAkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJmFkZAkoImVkaSIsJkRXUCgyMCwiZXNpIikpOwoJJmFkZAkoImVieCIsJkRXUCgyNCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgyOCwiZXNpIikpOwoJJm1vdgkoJkRXUCgxNiwiZXNpIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNpIiksImVkaSIpOwoJJm1vdgkoJkRXUCgyNCwiZXNpIiksImVieCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNpIiksImVjeCIpOwoJICMmbW92CSgmRFdQKDE2LCJlc3AiKSwkRSk7CgkgJm1vdgkoJkRXUCgyMCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCg5Nis0LCJlc3AiKSk7CSMgaW5wCgkgJm1vdgkoJkRXUCgyNCwiZXNwIiksImVieCIpOwoJICZtb3YJKCZEV1AoMjgsImVzcCIpLCJlY3giKTsKCgkmY21wCSgiZWRpIiwmRFdQKDk2KzgsImVzcCIpKTsJIyBhcmUgd2UgZG9uZSB5ZXQ/CgkmamIJKCZsYWJlbCgiZ3JhbmRfbG9vcCIpKTsKCgkmbW92CSgiZXNwIiwmRFdQKDk2KzEyLCJlc3AiKSk7CSMgcmVzdG9yZSBzcAomZnVuY3Rpb25fZW5kX0EoKTsKfQoJCQkJCQlpZiAoISRpMzg2ICYmICR4bW0pIHt7ewpteSBAWCA9IG1hcCgieG1tJF8iLCgwLi4zKSk7Cm15ICgkdDAsJHQxLCR0MiwkdDMpID0gbWFwKCJ4bW0kXyIsKDQuLjcpKTsKbXkgQEFIID0gKCRBLCRUKTsKCiZzZXRfbGFiZWwoIlNTU0UzIiwzMik7CgkmbGVhCSgiZXNwIiwmRFdQKC05NiwiZXNwIikpOwoJIyBjb3B5IGN0eC0+aFswLTddIHRvIEEsQixDLEQsRSxGLEcsSCBvbiBzdGFjawoJJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNpIikpOwoJJm1vdgkoJEFIWzFdLCZEV1AoNCwiZXNpIikpOwoJJm1vdgkoImVjeCIsJkRXUCg4LCJlc2kiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDEyLCJlc2kiKSk7CgkjJm1vdgkoJkRXUCgwLCJlc3AiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc3AiKSwkQUhbMV0pOwoJJnhvcgkoJEFIWzFdLCJlY3giKTsJCQkjIG1hZ2ljCgkmbW92CSgmRFdQKDgsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMTIsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCRFLCZEV1AoMTYsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjAsImVzaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMjQsImVzaSIpKTsKCSZtb3YJKCJlc2kiLCZEV1AoMjgsImVzaSIpKTsKCSMmbW92CSgmRFdQKDE2LCJlc3AiKSwkRSk7CgkmbW92CSgmRFdQKDIwLCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDk2KzQsImVzcCIpKTsJIyBpbnAKCSZtb3YJKCZEV1AoMjQsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMjgsImVzcCIpLCJlc2kiKTsKCSZtb3ZkcWEJKCR0MywmUVdQKDI1NiwkSzI1NikpOwoJJmptcAkoJmxhYmVsKCJncmFuZF9zc3NlMyIpKTsKCiZzZXRfbGFiZWwoImdyYW5kX3Nzc2UzIiwxNik7CgkjIGxvYWQgaW5wdXQsIHJldmVyc2UgYnl0ZSBvcmRlciwgYWRkIEsyNTZbMC4uMTVdLCBzYXZlIHRvIHN0YWNrCgkmbW92ZHF1CShAWFswXSwmUVdQKDAsImVkaSIpKTsKCSZtb3ZkcXUJKEBYWzFdLCZRV1AoMTYsImVkaSIpKTsKCSZtb3ZkcXUJKEBYWzJdLCZRV1AoMzIsImVkaSIpKTsKCSZtb3ZkcXUJKEBYWzNdLCZRV1AoNDgsImVkaSIpKTsKCSZhZGQJKCJlZGkiLDY0KTsKCSZwc2h1ZmIJKEBYWzBdLCR0Myk7CgkmbW92CSgmRFdQKDk2KzQsImVzcCIpLCJlZGkiKTsKCSZwc2h1ZmIJKEBYWzFdLCR0Myk7CgkmbW92ZHFhCSgkdDAsJlFXUCgwLCRLMjU2KSk7CgkmcHNodWZiCShAWFsyXSwkdDMpOwoJJm1vdmRxYQkoJHQxLCZRV1AoMTYsJEsyNTYpKTsKCSZwYWRkZAkoJHQwLEBYWzBdKTsKCSZwc2h1ZmIJKEBYWzNdLCR0Myk7CgkmbW92ZHFhCSgkdDIsJlFXUCgzMiwkSzI1NikpOwoJJnBhZGRkCSgkdDEsQFhbMV0pOwoJJm1vdmRxYQkoJHQzLCZRV1AoNDgsJEsyNTYpKTsKCSZtb3ZkcWEJKCZRV1AoMzIrMCwiZXNwIiksJHQwKTsKCSZwYWRkZAkoJHQyLEBYWzJdKTsKCSZtb3ZkcWEJKCZRV1AoMzIrMTYsImVzcCIpLCR0MSk7CgkmcGFkZGQJKCR0MyxAWFszXSk7CgkmbW92ZHFhCSgmUVdQKDMyKzMyLCJlc3AiKSwkdDIpOwoJJm1vdmRxYQkoJlFXUCgzMis0OCwiZXNwIiksJHQzKTsKCSZqbXAJKCZsYWJlbCgic3NzZTNfMDBfNDciKSk7Cgomc2V0X2xhYmVsKCJzc3NlM18wMF80NyIsMTYpOwoJJmFkZAkJKCRLMjU2LDY0KTsKCnN1YiBTU1NFM18wMF80NyAoKSB7Cm15ICRqID0gc2hpZnQ7Cm15ICRib2R5ID0gc2hpZnQ7Cm15IEBYID0gQF87Cm15IEBpbnNucyA9ICgmJGJvZHksJiRib2R5LCYkYm9keSwmJGJvZHkpOwkjIDEyMCBpbnN0cnVjdGlvbnMKCgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmbW92ZHFhCQkoJHQwLEBYWzFdKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZtb3ZkcWEJCSgkdDMsQFhbM10pOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBhbGlnbnIJKCR0MCxAWFswXSw0KTsJCSMgWFsxLi40XQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwYWxpZ25yCSgkdDMsQFhbMl0sNCk7CQkjIFhbOS4uMTJdCgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmbW92ZHFhCQkoJHQxLCR0MCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmbW92ZHFhCQkoJHQyLCR0MCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmcHNybGQJCSgkdDAsMyk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgJnBhZGRkCQkoQFhbMF0sJHQzKTsJCSMgWFswLi4zXSArPSBYWzkuLjEyXQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBzcmxkCQkoJHQyLDcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc2h1ZmQJKCR0MyxAWFszXSwwYjExMTExMDEwKTsJIyBYWzE0Li4xNV0KCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZwc2xsZAkJKCR0MSwzMi0xOCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkmcHhvcgkJKCR0MCwkdDIpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBzcmxkCQkoJHQyLDE4LTcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJJnB4b3IJCSgkdDAsJHQxKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZwc2xsZAkJKCR0MSwxOC03KTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSZweG9yCQkoJHQwLCR0Mik7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJm1vdmRxYQkoJHQyLCR0Myk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkmcHhvcgkJKCR0MCwkdDEpOwkJIyBzaWdtYTAoWFsxLi40XSkKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmcHNybGQJCSgkdDMsMTApOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJJnBhZGRkCQkoQFhbMF0sJHQwKTsJCSMgWFswLi4zXSArPSBzaWdtYTAoWFsxLi40XSkKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmcHNybHEJCSgkdDIsMTcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICZweG9yCQkoJHQzLCR0Mik7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzcmxxCQkoJHQyLDE5LTE3KTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAmcHhvcgkJKCR0MywkdDIpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc2h1ZmQJKCR0MywkdDMsMGIxMDAwMDAwMCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzcmxkcQkoJHQzLDgpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBhZGRkCQkoQFhbMF0sJHQzKTsJCSMgWFswLi4xXSArPSBzaWdtYTEoWFsxNC4uMTVdKQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc2h1ZmQJKCR0MyxAWFswXSwwYjAxMDEwMDAwKTsJIyBYWzE2Li4xN10KCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmbW92ZHFhCSgkdDIsJHQzKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAmcHNybGQJCSgkdDMsMTApOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc3JscQkJKCR0MiwxNyk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgJnB4b3IJCSgkdDMsJHQyKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmcHNybHEJCSgkdDIsMTktMTcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICZweG9yCQkoJHQzLCR0Mik7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzaHVmZAkoJHQzLCR0MywwYjAwMDAxMDAwKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSZtb3ZkcWEJCSgkdDIsJlFXUCgxNiokaiwkSzI1NikpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc2xsZHEJKCR0Myw4KTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSZwYWRkZAkJKEBYWzBdLCR0Myk7CQkjIFhbMi4uM10gKz0gc2lnbWExKFhbMTYuLjE3XSkKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZwYWRkZAkJKCR0MixAWFswXSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgoJZm9yZWFjaCAoQGluc25zKSB7IGV2YWw7IH0JCSMgcmVtYWluaW5nIGluc3RydWN0aW9ucwoKCSZtb3ZkcWEJCSgmUVdQKDMyKzE2KiRqLCJlc3AiKSwkdDIpOwp9CgpzdWIgYm9keV8wMF8xNSAoKSB7CgkoCgknJm1vdgkoImVjeCIsJEUpOycsCgknJnJvcgkoJEUsMjUtMTEpOycsCgkgJyZtb3YJKCJlc2kiLCZvZmYoJGYpKTsnLAoJJyZ4b3IJKCRFLCJlY3giKTsnLAoJICcmbW92CSgiZWRpIiwmb2ZmKCRnKSk7JywKCSAnJnhvcgkoImVzaSIsImVkaSIpOycsCgknJnJvcgkoJEUsMTEtNik7JywKCSAnJmFuZAkoImVzaSIsImVjeCIpOycsCgkgJyZtb3YJKCZvZmYoJGUpLCJlY3giKTsnLAkjIHNhdmUgJEUsIG1vZHVsby1zY2hlZHVsZWQKCScmeG9yCSgkRSwiZWN4Iik7JywKCSAnJnhvcgkoImVkaSIsImVzaSIpOycsCSMgQ2goZSxmLGcpCgknJnJvcgkoJEUsNik7JywJCSMgVCA9IFNpZ21hMShlKQoJICcmbW92CSgiZWN4IiwkQUhbMF0pOycsCgkgJyZhZGQJKCRFLCJlZGkiKTsnLAkJIyBUICs9IENoKGUsZixnKQoJICcmbW92CSgiZWRpIiwmb2ZmKCRiKSk7JywKCScmbW92CSgiZXNpIiwkQUhbMF0pOycsCgoJJyZyb3IJKCJlY3giLDIyLTEzKTsnLAoJICcmbW92CSgmb2ZmKCRhKSwkQUhbMF0pOycsCSMgc2F2ZSAkQSwgbW9kdWxvLXNjaGVkdWxlZAoJJyZ4b3IJKCJlY3giLCRBSFswXSk7JywKCSAnJnhvcgkoJEFIWzBdLCJlZGkiKTsnLAkjIGEgXj0gYiwgKGJeYykgaW4gbmV4dCByb3VuZAoJICcmYWRkCSgkRSwmb2ZmKCRoKSk7JywJIyBUICs9IGgKCScmcm9yCSgiZWN4IiwxMy0yKTsnLAoJICcmYW5kCSgkQUhbMV0sJEFIWzBdKTsnLAkjIChiXmMpICY9IChhXmIpCgknJnhvcgkoImVjeCIsImVzaSIpOycsCgkgJyZhZGQJKCRFLCZEV1AoMzIrNCooJGkmMTUpLCJlc3AiKSk7JywJIyBUICs9IEtbaV0rWFtpXQoJICcmeG9yCSgkQUhbMV0sImVkaSIpOycsCSMgaCA9IE1haihhLGIsYykgPSBDaChhXmIsYyxiKQoJJyZyb3IJKCJlY3giLDIpOycsCQkjIFNpZ21hMChhKQoKCSAnJmFkZAkoJEFIWzFdLCRFKTsnLAkJIyBoICs9IFQKCSAnJmFkZAkoJEUsJm9mZigkZCkpOycsCSMgZCArPSBUCgknJmFkZAkoJEFIWzFdLCJlY3giKTsnLgkjIGggKz0gU2lnbWEwKGEpCgoJJ0BBSCA9IHJldmVyc2UoQEFIKTsgJGkrKzsnCSMgcm90YXRlKGEsaCkKCSk7Cn0KCiAgICBmb3IgKCRpPTAsJGo9MDsgJGo8NDsgJGorKykgewoJJlNTU0UzXzAwXzQ3KCRqLFwmYm9keV8wMF8xNSxAWCk7CglwdXNoKEBYLHNoaWZ0KEBYKSk7CQkjIHJvdGF0ZShAWCkKICAgIH0KCSZjbXAJKCZEV1AoMTYqJGosJEsyNTYpLDB4MDAwMTAyMDMpOwoJJmpuZQkoJmxhYmVsKCJzc3NlM18wMF80NyIpKTsKCiAgICBmb3IgKCRpPTA7ICRpPDE2OyApIHsKCWZvcmVhY2goYm9keV8wMF8xNSgpKSB7IGV2YWw7IH0KICAgIH0KCgkmbW92CSgiZXNpIiwmRFdQKDk2LCJlc3AiKSk7CSNjdHgKCQkJCQkjJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNwIikpOwoJJnhvcgkoJEFIWzFdLCJlZGkiKTsJCSMmbW92CSgkQUhbMV0sJkRXUCg0LCJlc3AiKSk7CgkJCQkJIyZtb3YJKCJlZGkiLCAmRFdQKDgsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMTIsImVzcCIpKTsKCSZhZGQJKCRBSFswXSwmRFdQKDAsImVzaSIpKTsKCSZhZGQJKCRBSFsxXSwmRFdQKDQsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoOCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgxMiwiZXNpIikpOwoJJm1vdgkoJkRXUCgwLCJlc2kiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc2kiKSwkQUhbMV0pOwoJJm1vdgkoJkRXUCg4LCJlc2kiKSwiZWRpIik7CgkmbW92CSgmRFdQKDEyLCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMCwiZXNwIiksJEFIWzBdKTsKCSAmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkgJnhvcgkoJEFIWzFdLCJlZGkiKTsJCQkjIG1hZ2ljCgkgJm1vdgkoJkRXUCg4LCJlc3AiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgxMiwiZXNwIiksImVjeCIpOwoJIyZtb3YJKCRFLCZEV1AoMTYsImVzcCIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjAsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMjQsImVzcCIpKTsKCSZhZGQJKCRFLCZEV1AoMTYsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoMjAsImVzaSIpKTsKCSZhZGQJKCJlY3giLCZEV1AoMjQsImVzaSIpKTsKCSZtb3YJKCZEV1AoMTYsImVzaSIpLCRFKTsKCSZtb3YJKCZEV1AoMjAsImVzaSIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDIwLCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDI4LCJlc3AiKSk7CgkmbW92CSgmRFdQKDI0LCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSZhZGQJKCJlZGkiLCZEV1AoMjgsImVzaSIpKTsKCSAmbW92CSgmRFdQKDI0LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDI4LCJlc2kiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgyOCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCg5Nis0LCJlc3AiKSk7CSMgaW5wCgoJJm1vdmRxYQkoJHQzLCZRV1AoNjQsJEsyNTYpKTsKCSZzdWIJKCRLMjU2LDMqNjQpOwkJCSMgcmV3aW5kIEsKCSZjbXAJKCJlZGkiLCZEV1AoOTYrOCwiZXNwIikpOwkjIGFyZSB3ZSBkb25lIHlldD8KCSZqYgkoJmxhYmVsKCJncmFuZF9zc3NlMyIpKTsKCgkmbW92CSgiZXNwIiwmRFdQKDk2KzEyLCJlc3AiKSk7CSMgcmVzdG9yZSBzcAomZnVuY3Rpb25fZW5kX0EoKTsKCQkJCQkJaWYgKCRhdngpIHsKJnNldF9sYWJlbCgiQVZYIiwzMik7CgkJCQkJCWlmICgkYXZ4PjEpIHsKCSZtb3YJKCJlZHgiLCZEV1AoOCwiZWR4IikpOwoJJmFuZAkoImVkeCIsMTw8OHwxPDwzKTsJCSMgY2hlY2sgZm9yIEJNSTIrQk1JMQoJJmNtcAkoImVkeCIsMTw8OHwxPDwzKTsKCSZqZQkoJmxhYmVsKCJBVlhfQk1JIikpOwoJCQkJCQl9CgkmbGVhCSgiZXNwIiwmRFdQKC05NiwiZXNwIikpOwoJJnZ6ZXJvYWxsCSgpOwoJIyBjb3B5IGN0eC0+aFswLTddIHRvIEEsQixDLEQsRSxGLEcsSCBvbiBzdGFjawoJJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNpIikpOwoJJm1vdgkoJEFIWzFdLCZEV1AoNCwiZXNpIikpOwoJJm1vdgkoImVjeCIsJkRXUCg4LCJlc2kiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDEyLCJlc2kiKSk7CgkjJm1vdgkoJkRXUCgwLCJlc3AiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc3AiKSwkQUhbMV0pOwoJJnhvcgkoJEFIWzFdLCJlY3giKTsJCQkjIG1hZ2ljCgkmbW92CSgmRFdQKDgsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMTIsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCRFLCZEV1AoMTYsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjAsImVzaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMjQsImVzaSIpKTsKCSZtb3YJKCJlc2kiLCZEV1AoMjgsImVzaSIpKTsKCSMmbW92CSgmRFdQKDE2LCJlc3AiKSwkRSk7CgkmbW92CSgmRFdQKDIwLCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDk2KzQsImVzcCIpKTsJIyBpbnAKCSZtb3YJKCZEV1AoMjQsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMjgsImVzcCIpLCJlc2kiKTsKCSZ2bW92ZHFhCSgkdDMsJlFXUCgyNTYsJEsyNTYpKTsKCSZqbXAJKCZsYWJlbCgiZ3JhbmRfYXZ4IikpOwoKJnNldF9sYWJlbCgiZ3JhbmRfYXZ4IiwzMik7CgkjIGxvYWQgaW5wdXQsIHJldmVyc2UgYnl0ZSBvcmRlciwgYWRkIEsyNTZbMC4uMTVdLCBzYXZlIHRvIHN0YWNrCgkmdm1vdmRxdQkoQFhbMF0sJlFXUCgwLCJlZGkiKSk7Cgkmdm1vdmRxdQkoQFhbMV0sJlFXUCgxNiwiZWRpIikpOwoJJnZtb3ZkcXUJKEBYWzJdLCZRV1AoMzIsImVkaSIpKTsKCSZ2bW92ZHF1CShAWFszXSwmUVdQKDQ4LCJlZGkiKSk7CgkmYWRkCQkoImVkaSIsNjQpOwoJJnZwc2h1ZmIJKEBYWzBdLEBYWzBdLCR0Myk7CgkmbW92CQkoJkRXUCg5Nis0LCJlc3AiKSwiZWRpIik7CgkmdnBzaHVmYgkoQFhbMV0sQFhbMV0sJHQzKTsKCSZ2cHNodWZiCShAWFsyXSxAWFsyXSwkdDMpOwoJJnZwYWRkZAkJKCR0MCxAWFswXSwmUVdQKDAsJEsyNTYpKTsKCSZ2cHNodWZiCShAWFszXSxAWFszXSwkdDMpOwoJJnZwYWRkZAkJKCR0MSxAWFsxXSwmUVdQKDE2LCRLMjU2KSk7CgkmdnBhZGRkCQkoJHQyLEBYWzJdLCZRV1AoMzIsJEsyNTYpKTsKCSZ2cGFkZGQJCSgkdDMsQFhbM10sJlFXUCg0OCwkSzI1NikpOwoJJnZtb3ZkcWEJKCZRV1AoMzIrMCwiZXNwIiksJHQwKTsKCSZ2bW92ZHFhCSgmUVdQKDMyKzE2LCJlc3AiKSwkdDEpOwoJJnZtb3ZkcWEJKCZRV1AoMzIrMzIsImVzcCIpLCR0Mik7Cgkmdm1vdmRxYQkoJlFXUCgzMis0OCwiZXNwIiksJHQzKTsKCSZqbXAJCSgmbGFiZWwoImF2eF8wMF80NyIpKTsKCiZzZXRfbGFiZWwoImF2eF8wMF80NyIsMTYpOwoJJmFkZAkJKCRLMjU2LDY0KTsKCnN1YiBYdXBkYXRlX0FWWCAoKSB7CgkoCgknJnZwYWxpZ25yCSgkdDAsQFhbMV0sQFhbMF0sNCk7JywJIyBYWzEuLjRdCgkgJyZ2cGFsaWducgkoJHQzLEBYWzNdLEBYWzJdLDQpOycsCSMgWFs5Li4xMl0KCScmdnBzcmxkCSgkdDIsJHQwLDcpOycsCgkgJyZ2cGFkZGQJKEBYWzBdLEBYWzBdLCR0Myk7JywJIyBYWzAuLjNdICs9IFhbOS4uMTZdCgknJnZwc3JsZAkoJHQzLCR0MCwzKTsnLAoJJyZ2cHNsbGQJKCR0MSwkdDAsMTQpOycsCgknJnZweG9yCQkoJHQwLCR0MywkdDIpOycsCgkgJyZ2cHNodWZkCSgkdDMsQFhbM10sMGIxMTExMTAxMCknLCMgWFsxNC4uMTVdCgknJnZwc3JsZAkoJHQyLCR0MiwxOC03KTsnLAoJJyZ2cHhvcgkJKCR0MCwkdDAsJHQxKTsnLAoJJyZ2cHNsbGQJKCR0MSwkdDEsMjUtMTQpOycsCgknJnZweG9yCQkoJHQwLCR0MCwkdDIpOycsCgkgJyZ2cHNybGQJKCR0MiwkdDMsMTApOycsCgknJnZweG9yCQkoJHQwLCR0MCwkdDEpOycsCSMgc2lnbWEwKFhbMS4uNF0pCgkgJyZ2cHNybHEJKCR0MSwkdDMsMTcpOycsCgknJnZwYWRkZAkoQFhbMF0sQFhbMF0sJHQwKTsnLAkjIFhbMC4uM10gKz0gc2lnbWEwKFhbMS4uNF0pCgkgJyZ2cHhvcgkoJHQyLCR0MiwkdDEpOycsCgkgJyZ2cHNybHEJKCR0MywkdDMsMTkpOycsCgkgJyZ2cHhvcgkoJHQyLCR0MiwkdDMpOycsCSMgc2lnbWExKFhbMTQuLjE1XQoJICcmdnBzaHVmZAkoJHQzLCR0MiwwYjEwMDAwMTAwKTsnLAoJJyZ2cHNybGRxCSgkdDMsJHQzLDgpOycsCgknJnZwYWRkZAkoQFhbMF0sQFhbMF0sJHQzKTsnLAkjIFhbMC4uMV0gKz0gc2lnbWExKFhbMTQuLjE1XSkKCSAnJnZwc2h1ZmQJKCR0MyxAWFswXSwwYjAxMDEwMDAwKScsIyBYWzE2Li4xN10KCSAnJnZwc3JsZAkoJHQyLCR0MywxMCk7JywKCSAnJnZwc3JscQkoJHQxLCR0MywxNyk7JywKCSAnJnZweG9yCSgkdDIsJHQyLCR0MSk7JywKCSAnJnZwc3JscQkoJHQzLCR0MywxOSk7JywKCSAnJnZweG9yCSgkdDIsJHQyLCR0Myk7JywJIyBzaWdtYTEoWFsxNi4uMTddCgkgJyZ2cHNodWZkCSgkdDMsJHQyLDBiMTExMDEwMDApOycsCgknJnZwc2xsZHEJKCR0MywkdDMsOCk7JywKCScmdnBhZGRkCShAWFswXSxAWFswXSwkdDMpOycJIyBYWzIuLjNdICs9IHNpZ21hMShYWzE2Li4xN10pCgkpOwp9Cgpsb2NhbCAqcm9yID0gc3ViIHsgJnNocmQoQF9bMF0sQF8pIH07CnN1YiBBVlhfMDBfNDcgKCkgewpteSAkaiA9IHNoaWZ0OwpteSAkYm9keSA9IHNoaWZ0OwpteSBAWCA9IEBfOwpteSBAaW5zbnMgPSAoJiRib2R5LCYkYm9keSwmJGJvZHksJiRib2R5KTsJIyAxMjAgaW5zdHJ1Y3Rpb25zCm15ICRpbnNuOwoKCWZvcmVhY2ggKFh1cGRhdGVfQVZYKCkpIHsJCSMgMzEgaW5zdHJ1Y3Rpb25zCgkgICAgZXZhbDsKCSAgICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICAgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgICAgZXZhbCgkaW5zbiA9IHNoaWZ0KEBpbnNucykpOwoJICAgIGV2YWwoc2hpZnQoQGluc25zKSkgaWYgKCRpbnNuID1+IC9yb3J4LyAmJiBAaW5zbnNbMF0gPX4gL3JvcngvKTsKCX0KCSZ2cGFkZGQJCSgkdDIsQFhbMF0sJlFXUCgxNiokaiwkSzI1NikpOwoJZm9yZWFjaCAoQGluc25zKSB7IGV2YWw7IH0JCSMgcmVtYWluaW5nIGluc3RydWN0aW9ucwoJJnZtb3ZkcWEJKCZRV1AoMzIrMTYqJGosImVzcCIpLCR0Mik7Cn0KCiAgICBmb3IgKCRpPTAsJGo9MDsgJGo8NDsgJGorKykgewoJJkFWWF8wMF80NygkaixcJmJvZHlfMDBfMTUsQFgpOwoJcHVzaChAWCxzaGlmdChAWCkpOwkJIyByb3RhdGUoQFgpCiAgICB9CgkmY21wCSgmRFdQKDE2KiRqLCRLMjU2KSwweDAwMDEwMjAzKTsKCSZqbmUJKCZsYWJlbCgiYXZ4XzAwXzQ3IikpOwoKICAgIGZvciAoJGk9MDsgJGk8MTY7ICkgewoJZm9yZWFjaChib2R5XzAwXzE1KCkpIHsgZXZhbDsgfQogICAgfQoKCSZtb3YJKCJlc2kiLCZEV1AoOTYsImVzcCIpKTsJI2N0eAoJCQkJCSMmbW92CSgkQUhbMF0sJkRXUCgwLCJlc3AiKSk7CgkmeG9yCSgkQUhbMV0sImVkaSIpOwkJIyZtb3YJKCRBSFsxXSwmRFdQKDQsImVzcCIpKTsKCQkJCQkjJm1vdgkoImVkaSIsICZEV1AoOCwiZXNwIikpOwoJJm1vdgkoImVjeCIsJkRXUCgxMiwiZXNwIikpOwoJJmFkZAkoJEFIWzBdLCZEV1AoMCwiZXNpIikpOwoJJmFkZAkoJEFIWzFdLCZEV1AoNCwiZXNpIikpOwoJJmFkZAkoImVkaSIsJkRXUCg4LCJlc2kiKSk7CgkmYWRkCSgiZWN4IiwmRFdQKDEyLCJlc2kiKSk7CgkmbW92CSgmRFdQKDAsImVzaSIpLCRBSFswXSk7CgkmbW92CSgmRFdQKDQsImVzaSIpLCRBSFsxXSk7CgkmbW92CSgmRFdQKDgsImVzaSIpLCJlZGkiKTsKCSZtb3YJKCZEV1AoMTIsImVzaSIpLCJlY3giKTsKCSAjJm1vdgkoJkRXUCgwLCJlc3AiKSwkQUhbMF0pOwoJICZtb3YJKCZEV1AoNCwiZXNwIiksJEFIWzFdKTsKCSAmeG9yCSgkQUhbMV0sImVkaSIpOwkJCSMgbWFnaWMKCSAmbW92CSgmRFdQKDgsImVzcCIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWN4Iik7CgkjJm1vdgkoJEUsJkRXUCgxNiwiZXNwIikpOwoJJm1vdgkoImVkaSIsJkRXUCgyMCwiZXNwIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyNCwiZXNwIikpOwoJJmFkZAkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJmFkZAkoImVkaSIsJkRXUCgyMCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgyNCwiZXNpIikpOwoJJm1vdgkoJkRXUCgxNiwiZXNpIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNpIiksImVkaSIpOwoJICZtb3YJKCZEV1AoMjAsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjgsImVzcCIpKTsKCSZtb3YJKCZEV1AoMjQsImVzaSIpLCJlY3giKTsKCSAjJm1vdgkoJkRXUCgxNiwiZXNwIiksJEUpOwoJJmFkZAkoImVkaSIsJkRXUCgyOCwiZXNpIikpOwoJICZtb3YJKCZEV1AoMjQsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMjgsImVzaSIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDI4LCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDk2KzQsImVzcCIpKTsJIyBpbnAKCgkmdm1vdmRxYQkoJHQzLCZRV1AoNjQsJEsyNTYpKTsKCSZzdWIJKCRLMjU2LDMqNjQpOwkJCSMgcmV3aW5kIEsKCSZjbXAJKCJlZGkiLCZEV1AoOTYrOCwiZXNwIikpOwkjIGFyZSB3ZSBkb25lIHlldD8KCSZqYgkoJmxhYmVsKCJncmFuZF9hdngiKSk7CgoJJm1vdgkoImVzcCIsJkRXUCg5NisxMiwiZXNwIikpOwkjIHJlc3RvcmUgc3AKCSZ2emVyb2FsbAkoKTsKJmZ1bmN0aW9uX2VuZF9BKCk7CgkJCQkJCWlmICgkYXZ4PjEpIHsKc3ViIGJvZHl4XzAwXzE1ICgpIHsJCQkjICsxMCUKCSgKCScmcm9yeAkoImVjeCIsJEUsNiknLAoJJyZyb3J4CSgiZXNpIiwkRSwxMSknLAoJICcmbW92CSgmb2ZmKCRlKSwkRSknLAkJIyBzYXZlICRFLCBtb2R1bG8tc2NoZWR1bGVkCgknJnJvcngJKCJlZGkiLCRFLDI1KScsCgknJnhvcgkoImVjeCIsImVzaSIpJywKCSAnJmFuZG4JKCJlc2kiLCRFLCZvZmYoJGcpKScsCgknJnhvcgkoImVjeCIsImVkaSIpJywJCSMgU2lnbWExKGUpCgkgJyZhbmQJKCRFLCZvZmYoJGYpKScsCgkgJyZtb3YJKCZvZmYoJGEpLCRBSFswXSk7JywJIyBzYXZlICRBLCBtb2R1bG8tc2NoZWR1bGVkCgkgJyZvcgkoJEUsImVzaSIpJywJCSMgVCA9IENoKGUsZixnKQoKCScmcm9yeAkoImVkaSIsJEFIWzBdLDIpJywKCScmcm9yeAkoImVzaSIsJEFIWzBdLDEzKScsCgkgJyZsZWEJKCRFLCZEV1AoMCwkRSwiZWN4IikpJywJIyBUICs9IFNpZ21hMShlKQoJJyZyb3J4CSgiZWN4IiwkQUhbMF0sMjIpJywKCScmeG9yCSgiZXNpIiwiZWRpIiknLAoJICcmbW92CSgiZWRpIiwmb2ZmKCRiKSknLAoJJyZ4b3IJKCJlY3giLCJlc2kiKScsCQkjIFNpZ21hMChhKQoKCSAnJnhvcgkoJEFIWzBdLCJlZGkiKScsCSMgYSBePSBiLCAoYl5jKSBpbiBuZXh0IHJvdW5kCgkgJyZhZGQJKCRFLCZvZmYoJGgpKScsCQkjIFQgKz0gaAoJICcmYW5kCSgkQUhbMV0sJEFIWzBdKScsCSMgKGJeYykgJj0gKGFeYikKCSAnJmFkZAkoJEUsJkRXUCgzMis0KigkaSYxNSksImVzcCIpKScsCSMgVCArPSBLW2ldK1hbaV0KCSAnJnhvcgkoJEFIWzFdLCJlZGkiKScsCSMgaCA9IE1haihhLGIsYykgPSBDaChhXmIsYyxiKQoKCSAnJmFkZAkoImVjeCIsJEUpJywJCSMgaCArPSBUCgkgJyZhZGQJKCRFLCZvZmYoJGQpKScsCQkjIGQgKz0gVAoJJyZsZWEJKCRBSFsxXSwmRFdQKDAsJEFIWzFdLCJlY3giKSk7Jy4JIyBoICs9IFNpZ21hMChhKQoKCSdAQUggPSByZXZlcnNlKEBBSCk7ICRpKys7JwkjIHJvdGF0ZShhLGgpCgkpOwp9Cgomc2V0X2xhYmVsKCJBVlhfQk1JIiwzMik7CgkmbGVhCSgiZXNwIiwmRFdQKC05NiwiZXNwIikpOwoJJnZ6ZXJvYWxsCSgpOwoJIyBjb3B5IGN0eC0+aFswLTddIHRvIEEsQixDLEQsRSxGLEcsSCBvbiBzdGFjawoJJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNpIikpOwoJJm1vdgkoJEFIWzFdLCZEV1AoNCwiZXNpIikpOwoJJm1vdgkoImVjeCIsJkRXUCg4LCJlc2kiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDEyLCJlc2kiKSk7CgkjJm1vdgkoJkRXUCgwLCJlc3AiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc3AiKSwkQUhbMV0pOwoJJnhvcgkoJEFIWzFdLCJlY3giKTsJCQkjIG1hZ2ljCgkmbW92CSgmRFdQKDgsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMTIsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCRFLCZEV1AoMTYsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjAsImVzaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMjQsImVzaSIpKTsKCSZtb3YJKCJlc2kiLCZEV1AoMjgsImVzaSIpKTsKCSMmbW92CSgmRFdQKDE2LCJlc3AiKSwkRSk7CgkmbW92CSgmRFdQKDIwLCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDk2KzQsImVzcCIpKTsJIyBpbnAKCSZtb3YJKCZEV1AoMjQsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMjgsImVzcCIpLCJlc2kiKTsKCSZ2bW92ZHFhCSgkdDMsJlFXUCgyNTYsJEsyNTYpKTsKCSZqbXAJKCZsYWJlbCgiZ3JhbmRfYXZ4X2JtaSIpKTsKCiZzZXRfbGFiZWwoImdyYW5kX2F2eF9ibWkiLDMyKTsKCSMgbG9hZCBpbnB1dCwgcmV2ZXJzZSBieXRlIG9yZGVyLCBhZGQgSzI1NlswLi4xNV0sIHNhdmUgdG8gc3RhY2sKCSZ2bW92ZHF1CShAWFswXSwmUVdQKDAsImVkaSIpKTsKCSZ2bW92ZHF1CShAWFsxXSwmUVdQKDE2LCJlZGkiKSk7Cgkmdm1vdmRxdQkoQFhbMl0sJlFXUCgzMiwiZWRpIikpOwoJJnZtb3ZkcXUJKEBYWzNdLCZRV1AoNDgsImVkaSIpKTsKCSZhZGQJCSgiZWRpIiw2NCk7CgkmdnBzaHVmYgkoQFhbMF0sQFhbMF0sJHQzKTsKCSZtb3YJCSgmRFdQKDk2KzQsImVzcCIpLCJlZGkiKTsKCSZ2cHNodWZiCShAWFsxXSxAWFsxXSwkdDMpOwoJJnZwc2h1ZmIJKEBYWzJdLEBYWzJdLCR0Myk7CgkmdnBhZGRkCQkoJHQwLEBYWzBdLCZRV1AoMCwkSzI1NikpOwoJJnZwc2h1ZmIJKEBYWzNdLEBYWzNdLCR0Myk7CgkmdnBhZGRkCQkoJHQxLEBYWzFdLCZRV1AoMTYsJEsyNTYpKTsKCSZ2cGFkZGQJCSgkdDIsQFhbMl0sJlFXUCgzMiwkSzI1NikpOwoJJnZwYWRkZAkJKCR0MyxAWFszXSwmUVdQKDQ4LCRLMjU2KSk7Cgkmdm1vdmRxYQkoJlFXUCgzMiswLCJlc3AiKSwkdDApOwoJJnZtb3ZkcWEJKCZRV1AoMzIrMTYsImVzcCIpLCR0MSk7Cgkmdm1vdmRxYQkoJlFXUCgzMiszMiwiZXNwIiksJHQyKTsKCSZ2bW92ZHFhCSgmUVdQKDMyKzQ4LCJlc3AiKSwkdDMpOwoJJmptcAkJKCZsYWJlbCgiYXZ4X2JtaV8wMF80NyIpKTsKCiZzZXRfbGFiZWwoImF2eF9ibWlfMDBfNDciLDE2KTsKCSZhZGQJCSgkSzI1Niw2NCk7CgogICAgZm9yICgkaT0wLCRqPTA7ICRqPDQ7ICRqKyspIHsKCSZBVlhfMDBfNDcoJGosXCZib2R5eF8wMF8xNSxAWCk7CglwdXNoKEBYLHNoaWZ0KEBYKSk7CQkjIHJvdGF0ZShAWCkKICAgIH0KCSZjbXAJKCZEV1AoMTYqJGosJEsyNTYpLDB4MDAwMTAyMDMpOwoJJmpuZQkoJmxhYmVsKCJhdnhfYm1pXzAwXzQ3IikpOwoKICAgIGZvciAoJGk9MDsgJGk8MTY7ICkgewoJZm9yZWFjaChib2R5eF8wMF8xNSgpKSB7IGV2YWw7IH0KICAgIH0KCgkmbW92CSgiZXNpIiwmRFdQKDk2LCJlc3AiKSk7CSNjdHgKCQkJCQkjJm1vdgkoJEFIWzBdLCZEV1AoMCwiZXNwIikpOwoJJnhvcgkoJEFIWzFdLCJlZGkiKTsJCSMmbW92CSgkQUhbMV0sJkRXUCg0LCJlc3AiKSk7CgkJCQkJIyZtb3YJKCJlZGkiLCAmRFdQKDgsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMTIsImVzcCIpKTsKCSZhZGQJKCRBSFswXSwmRFdQKDAsImVzaSIpKTsKCSZhZGQJKCRBSFsxXSwmRFdQKDQsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoOCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgxMiwiZXNpIikpOwoJJm1vdgkoJkRXUCgwLCJlc2kiKSwkQUhbMF0pOwoJJm1vdgkoJkRXUCg0LCJlc2kiKSwkQUhbMV0pOwoJJm1vdgkoJkRXUCg4LCJlc2kiKSwiZWRpIik7CgkmbW92CSgmRFdQKDEyLCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMCwiZXNwIiksJEFIWzBdKTsKCSAmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkgJnhvcgkoJEFIWzFdLCJlZGkiKTsJCQkjIG1hZ2ljCgkgJm1vdgkoJkRXUCg4LCJlc3AiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgxMiwiZXNwIiksImVjeCIpOwoJIyZtb3YJKCRFLCZEV1AoMTYsImVzcCIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjAsImVzcCIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMjQsImVzcCIpKTsKCSZhZGQJKCRFLCZEV1AoMTYsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoMjAsImVzaSIpKTsKCSZhZGQJKCJlY3giLCZEV1AoMjQsImVzaSIpKTsKCSZtb3YJKCZEV1AoMTYsImVzaSIpLCRFKTsKCSZtb3YJKCZEV1AoMjAsImVzaSIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDIwLCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDI4LCJlc3AiKSk7CgkmbW92CSgmRFdQKDI0LCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSZhZGQJKCJlZGkiLCZEV1AoMjgsImVzaSIpKTsKCSAmbW92CSgmRFdQKDI0LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDI4LCJlc2kiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgyOCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCg5Nis0LCJlc3AiKSk7CSMgaW5wCgoJJnZtb3ZkcWEJKCR0MywmUVdQKDY0LCRLMjU2KSk7Cgkmc3ViCSgkSzI1NiwzKjY0KTsJCQkjIHJld2luZCBLCgkmY21wCSgiZWRpIiwmRFdQKDk2KzgsImVzcCIpKTsJIyBhcmUgd2UgZG9uZSB5ZXQ/CgkmamIJKCZsYWJlbCgiZ3JhbmRfYXZ4X2JtaSIpKTsKCgkmbW92CSgiZXNwIiwmRFdQKDk2KzEyLCJlc3AiKSk7CSMgcmVzdG9yZSBzcAoJJnZ6ZXJvYWxsCSgpOwomZnVuY3Rpb25fZW5kX0EoKTsKCQkJCQkJfQoJCQkJCQl9CgkJCQkJCX19fQomZnVuY3Rpb25fZW5kX0IoInNoYTI1Nl9ibG9ja19kYXRhX29yZGVyIik7CgomYXNtX2ZpbmlzaCgpOwo=