IyEvdXNyL2Jpbi9lbnYgcGVybAojCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPiBmb3IgdGhlIE9wZW5TU0wKIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCiMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojCiMgU0hBMjU2IGJsb2NrIHRyYW5zZm9ybSBmb3IgeDg2LiBTZXB0ZW1iZXIgMjAwNy4KIwojIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50IG92ZXIgY29tcGlsZXIgZ2VuZXJhdGVkIGNvZGUgdmFyaWVzIGZyb20KIyAxMCUgdG8gNDAlIFtzZWUgYmVsb3ddLiBOb3QgdmVyeSBpbXByZXNzaXZlIG9uIHNvbWUgtS1hcmNocywgYnV0CiMgaXQncyA1IHRpbWVzIHNtYWxsZXIgYW5kIG9wdGltaXppZXMgYW1vdW50IG9mIHdyaXRlcy4KIwojIE1heSAyMDEyLgojCiMgT3B0aW1pemF0aW9uIGluY2x1ZGluZyB0d28gb2YgUGF2ZWwgU2VtamFub3YncyBpZGVhcywgYWx0ZXJuYXRpdmUKIyBNYWogYW5kIGZ1bGwgdW5yb2xsLCByZXN1bHRlZCBpbiB+MjAtMjUlIGltcHJvdmVtZW50IG9uIG1vc3QgQ1BVcywKIyB+NyUgb24gUGVudGl1bSwgfjQwJSBvbiBBdG9tLiBBcyBmdWxseSB1bnJvbGxlZCBsb29wIGJvZHkgaXMgYWxtb3N0CiMgMTV4IGxhcmdlciwgOEtCIHZzLiA1NjBCLCBpdCdzIGZpcmVkIG9ubHkgZm9yIGxvbmdlciBpbnB1dHMuIEJ1dCBub3QKIyBvbiBQNCwgd2hlcmUgaXQga2lsbHMgcGVyZm9ybWFuY2UsIG5vciBTYW5keSBCcmlkZ2UsIHdoZXJlIGZvbGRlZAojIGxvb3AgaXMgYXBwcm94aW1hdGVseSBhcyBmYXN0Li4uCiMKIyBKdW5lIDIwMTIuCiMKIyBBZGQgQU1EIFhPUC1zcGVjaWZpYyBjb2RlIHBhdGgsID4zMCUgaW1wcm92ZW1lbnQgb24gQnVsbGRvemVyIG92ZXIKIyBNYXkgdmVyc2lvbiwgPjYwJSBvdmVyIG9yaWdpbmFsLiBBZGQgQVZYK3NocmQgY29kZSBwYXRoLCA+MjUlCiMgaW1wcm92ZW1lbnQgb24gU2FuZHkgQnJpZGdlIG92ZXIgTWF5IHZlcnNpb24sIDYwJSBvdmVyIG9yaWdpbmFsLgojCiMgTWF5IDIwMTMuCiMKIyBSZXBsYWNlIEFNRCBYT1AgY29kZSBwYXRoIHdpdGggU1NTRTMgdG8gY292ZXIgbW9yZSBwcm9jZXNzb3JzLgojIChCaWdnZXN0IGltcHJvdmVtZW50IGNvZWZmaWNpZW50IGlzIG9uIHVwY29taW5nIEF0b20gU2lsdmVybW9udCwKIyBub3Qgc2hvd24uKSBBZGQgQVZYK0JNSSBjb2RlIHBhdGguCiMKIyBQZXJmb3JtYW5jZSBpbiBjbG9jayBjeWNsZXMgcGVyIHByb2Nlc3NlZCBieXRlIChsZXNzIGlzIGJldHRlcik6CiMKIwkJZ2NjCWljYwl4ODYgYXNtKCopCVNJTUQJeDg2XzY0IGFzbSgqKikJCiMgUGVudGl1bQk0Ngk1Nwk0MC8zOAkJLQktCiMgUElJSQkJMzYJMzMJMjcvMjQJCS0JLQojIFA0CQk0MQkzOAkyOAkJLQkxNy4zCiMgQU1EIEs4CTI3CTI1CTE5LzE1LjUJCS0JMTQuOQojIENvcmUyCQkyNgkyMwkxOC8xNS42CQkxNC4zCTEzLjgKIyBXZXN0bWVyZQkyNwktCTE5LzE1LjcJCTEzLjQJMTIuMwojIFNhbmR5IEJyaWRnZQkyNQktCTE1LjkJCTEyLjQJMTEuNgojIEl2eSBCcmlkZ2UJMjQJLQkxNS4wCQkxMS40CTEwLjMKIyBIYXN3ZWxsCTIyCS0JMTMuOQkJOS40Ngk3LjgwCiMgQnVsbGRvemVyCTM2CS0JMjcvMjIJCTE3LjAJMTMuNgojIFZJQSBOYW5vCTM2CS0JMjUvMjIJCTE2LjgJMTYuNQojIEF0b20JCTUwCS0JMzAvMjUJCTIxLjkJMTguOQojCiMgKCopCW51bWJlcnMgYWZ0ZXIgc2xhc2ggYXJlIGZvciB1bnJvbGxlZCBsb29wLCB3aGVyZSBhcHBsaWNhYmxlOwojICgqKikJeDg2XzY0IGFzc2VtYmx5IHBlcmZvcm1hbmNlIGlzIHByZXNlbnRlZCBmb3IgcmVmZXJlbmNlCiMJcHVycG9zZXMsIHJlc3VsdHMgYXJlIGJlc3QtYXZhaWxhYmxlOwoKJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKcHVzaChASU5DLCIke2Rpcn0iLCIke2Rpcn0uLi8uLi9wZXJsYXNtIik7CnJlcXVpcmUgIng4NmFzbS5wbCI7CgomYXNtX2luaXQoJEFSR1ZbMF0sInNoYTUxMi01ODYucGwiLCRBUkdWWyQjQVJHVl0gZXEgIjM4NiIpOwoKJHhtbT0kYXZ4PTA7CmZvciAoQEFSR1YpIHsgJHhtbT0xIGlmICgvLURPUEVOU1NMX0lBMzJfU1NFMi8pOyB9CgppZiAoJHhtbSAmJglgJEVOVntDQ30gLVdhLC12IC1jIC1vIC9kZXYvbnVsbCAteCBhc3NlbWJsZXIgL2Rldi9udWxsIDI+JjFgCgkJCT1+IC9HTlUgYXNzZW1ibGVyIHZlcnNpb24gKFsyLTldXC5bMC05XSspLykgewoJJGF2eCA9ICgkMT49Mi4xOSkgKyAoJDE+PTIuMjIpOwp9CgppZiAoJHhtbSAmJiAhJGF2eCAmJiAkQVJHVlswXSBlcSAid2luMzJuIiAmJgoJCWBuYXNtIC12IDI+JjFgID1+IC9OQVNNIHZlcnNpb24gKFsyLTldXC5bMC05XSspLykgewoJJGF2eCA9ICgkMT49Mi4wMykgKyAoJDE+PTIuMTApOwp9CgppZiAoJHhtbSAmJiAhJGF2eCAmJiAkQVJHVlswXSBlcSAid2luMzIiICYmCgkJYG1sIDI+JjFgID1+IC9WZXJzaW9uIChbMC05XSspXC4vKSB7CgkkYXZ4ID0gKCQxPj0xMCkgKyAoJDE+PTExKTsKfQoKJHVucm9sbF9hZnRlciA9IDY0KjQ7CSMgSWYgcHJlLWV2aWN0ZWQgZnJvbSBMMVAgY2FjaGUgZmlyc3Qgc3BpbiBvZgoJCQkjIGZ1bGx5IHVucm9sbGVkIGxvb3Agd2FzIG1lYXN1cmVkIHRvIHJ1biBhYm91dAoJCQkjIDMtNHggc2xvd2VyLiBJZiBzbG93ZG93biBjb2VmZmljaWVudCBpcyBOIGFuZAoJCQkjIHVucm9sbGVkIGxvb3AgaXMgbSB0aW1lcyBmYXN0ZXIsIHRoZW4geW91IGJyZWFrCgkJCSMgZXZlbiBhdCAoTi0xKS8obS0xKSBibG9ja3MuIFRoZW4gaXQgbmVlZHMgdG8gYmUKCQkJIyBhZGp1c3RlZCBmb3IgcHJvYmFiaWxpdHkgb2YgY29kZSBiZWluZyBldmljdGVkLAoJCQkjIGNvZGUgc2l6ZS9jYWNoZSBzaXplPTEvNC4gVHlwaWNhbCBtIGlzIDEuMTUuLi4KCiRBPSJlYXgiOwokRT0iZWR4IjsKJFQ9ImVieCI7CiRBb2ZmPSZEV1AoNCwiZXNwIik7CiRCb2ZmPSZEV1AoOCwiZXNwIik7CiRDb2ZmPSZEV1AoMTIsImVzcCIpOwokRG9mZj0mRFdQKDE2LCJlc3AiKTsKJEVvZmY9JkRXUCgyMCwiZXNwIik7CiRGb2ZmPSZEV1AoMjQsImVzcCIpOwokR29mZj0mRFdQKDI4LCJlc3AiKTsKJEhvZmY9JkRXUCgzMiwiZXNwIik7CiRYb2ZmPSZEV1AoMzYsImVzcCIpOwokSzI1Nj0iZWJwIjsKCnN1YiBCT0RZXzE2XzYzKCkgewoJJm1vdgkoJFQsImVjeCIpOwkJCSMgImVjeCIgaXMgcHJlbG9hZGVkCgkgJm1vdgkoImVzaSIsJkRXUCg0Kig5KzE1KzE2LTE0KSwiZXNwIikpOwoJJnJvcgkoImVjeCIsMTgtNyk7CgkgJm1vdgkoImVkaSIsImVzaSIpOwoJJnJvcgkoImVzaSIsMTktMTcpOwoJICZ4b3IJKCJlY3giLCRUKTsKCSAmc2hyCSgkVCwzKTsKCSZyb3IJKCJlY3giLDcpOwoJICZ4b3IJKCJlc2kiLCJlZGkiKTsKCSAmeG9yCSgkVCwiZWN4Iik7CQkJIyBUID0gc2lnbWEwKFhbLTE1XSkKCSZyb3IJKCJlc2kiLDE3KTsKCSAmYWRkCSgkVCwmRFdQKDQqKDkrMTUrMTYpLCJlc3AiKSk7CSMgVCArPSBYWy0xNl0KCSZzaHIJKCJlZGkiLDEwKTsKCSAmYWRkCSgkVCwmRFdQKDQqKDkrMTUrMTYtOSksImVzcCIpKTsJIyBUICs9IFhbLTddCgkjJnhvcgkoImVkaSIsImVzaSIpCQkJIyBzaWdtYTEoWFstMl0pCgkjICZhZGQJKCRULCJlZGkiKTsJCQkjIFQgKz0gc2lnbWExKFhbLTJdKQoJIyAmbW92CSgmRFdQKDQqKDkrMTUpLCJlc3AiKSwkVCk7CSMgc2F2ZSBYWzBdCgoJJkJPRFlfMDBfMTUoMSk7Cn0Kc3ViIEJPRFlfMDBfMTUoKSB7CiAgICBteSAkaW5fMTZfNjM9c2hpZnQ7CgoJJm1vdgkoImVjeCIsJEUpOwoJICZ4b3IJKCJlZGkiLCJlc2kiKQkJCWlmICgkaW5fMTZfNjMpOwkjIHNpZ21hMShYWy0yXSkKCSAmbW92CSgiZXNpIiwkRm9mZik7Cgkmcm9yCSgiZWN4IiwyNS0xMSk7CgkgJmFkZAkoJFQsImVkaSIpCQkJaWYgKCRpbl8xNl82Myk7CSMgVCArPSBzaWdtYTEoWFstMl0pCgkgJm1vdgkoImVkaSIsJEdvZmYpOwoJJnhvcgkoImVjeCIsJEUpOwoJICZ4b3IJKCJlc2kiLCJlZGkiKTsKCSAmbW92CSgkVCwmRFdQKDQqKDkrMTUpLCJlc3AiKSkJaWYgKCEkaW5fMTZfNjMpOwoJICZtb3YJKCZEV1AoNCooOSsxNSksImVzcCIpLCRUKQlpZiAoJGluXzE2XzYzKTsJIyBzYXZlIFhbMF0KCSZyb3IJKCJlY3giLDExLTYpOwoJICZhbmQJKCJlc2kiLCRFKTsKCSAmbW92CSgkRW9mZiwkRSk7CQkjIG1vZHVsby1zY2hlZHVsZWQKCSZ4b3IJKCRFLCJlY3giKTsKCSAmYWRkCSgkVCwkSG9mZik7CQkjIFQgKz0gaAoJICZ4b3IJKCJlc2kiLCJlZGkiKTsJCSMgQ2goZSxmLGcpCgkmcm9yCSgkRSw2KTsJCQkjIFNpZ21hMShlKQoJICZtb3YJKCJlY3giLCRBKTsKCSAmYWRkCSgkVCwiZXNpIik7CQkjIFQgKz0gQ2goZSxmLGcpCgoJJnJvcgkoImVjeCIsMjItMTMpOwoJICZhZGQJKCRULCRFKTsJCSMgVCArPSBTaWdtYTEoZSkKCSAmbW92CSgiZWRpIiwkQm9mZik7CgkmeG9yCSgiZWN4IiwkQSk7CgkgJm1vdgkoJEFvZmYsJEEpOwkJIyBtb2R1bG8tc2NoZWR1bGVkCgkgJmxlYQkoImVzcCIsJkRXUCgtNCwiZXNwIikpOwoJJnJvcgkoImVjeCIsMTMtMik7CgkgJm1vdgkoImVzaSIsJkRXUCgwLCRLMjU2KSk7CgkmeG9yCSgiZWN4IiwkQSk7CgkgJm1vdgkoJEUsJEVvZmYpOwkJIyBlIGluIG5leHQgaXRlcmF0aW9uLCBkIGluIHRoaXMgb25lCgkgJnhvcgkoJEEsImVkaSIpOwkJIyBhIF49IGIKCSZyb3IJKCJlY3giLDIpOwkJIyBTaWdtYTAoYSkKCgkgJmFkZAkoJFQsImVzaSIpOwkJIyBUKz0gS1tpXQoJICZtb3YJKCZEV1AoMCwiZXNwIiksJEEpOwkjIChiXmMpIGluIG5leHQgcm91bmQKCSZhZGQJKCRFLCRUKTsJCSMgZCArPSBUCgkgJmFuZAkoJEEsJkRXUCg0LCJlc3AiKSk7CSMgYSAmPSAoYl5jKQoJJmFkZAkoJFQsImVjeCIpOwkJIyBUICs9IFNpZ21hMChhKQoJICZ4b3IJKCRBLCJlZGkiKTsJCSMgaCA9IE1haihhLGIsYykgPSBDaChhXmIsYyxiKQoJICZtb3YJKCJlY3giLCZEV1AoNCooOSsxNSsxNi0xKSwiZXNwIikpCWlmICgkaW5fMTZfNjMpOwkjIHByZWxvYWQgVAoJJmFkZAkoJEsyNTYsNCk7CgkgJmFkZAkoJEEsJFQpOwkJIyBoICs9IFQKfQoKJmV4dGVybmFsX2xhYmVsKCJPUEVOU1NMX2lhMzJjYXBfUCIpCQlpZiAoISRpMzg2KTsKCiZmdW5jdGlvbl9iZWdpbigic2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIiKTsKCSZtb3YJKCJlc2kiLHdwYXJhbSgwKSk7CSMgY3R4CgkmbW92CSgiZWRpIix3cGFyYW0oMSkpOwkjIGlucAoJJm1vdgkoImVheCIsd3BhcmFtKDIpKTsJIyBudW0KCSZtb3YJKCJlYngiLCJlc3AiKTsJCSMgc2F2ZWQgc3AKCgkmY2FsbAkoJmxhYmVsKCJwaWNfcG9pbnQiKSk7CSMgbWFrZSBpdCBQSUMhCiZzZXRfbGFiZWwoInBpY19wb2ludCIpOwoJJmJsaW5kcG9wKCRLMjU2KTsKCSZsZWEJKCRLMjU2LCZEV1AoJmxhYmVsKCJLMjU2IikuIi0iLiZsYWJlbCgicGljX3BvaW50IiksJEsyNTYpKTsKCgkmc3ViCSgiZXNwIiwxNik7CgkmYW5kCSgiZXNwIiwtNjQpOwoKCSZzaGwJKCJlYXgiLDYpOwoJJmFkZAkoImVheCIsImVkaSIpOwoJJm1vdgkoJkRXUCgwLCJlc3AiKSwiZXNpIik7CSMgY3R4CgkmbW92CSgmRFdQKDQsImVzcCIpLCJlZGkiKTsJIyBpbnAKCSZtb3YJKCZEV1AoOCwiZXNwIiksImVheCIpOwkjIGlucCtudW0qMTI4CgkmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWJ4Iik7CSMgc2F2ZWQgc3AKCQkJCQkJaWYgKCEkaTM4NiAmJiAkeG1tKSB7CgkmcGljbWV1cCgiZWR4IiwiT1BFTlNTTF9pYTMyY2FwX1AiLCRLMjU2LCZsYWJlbCgiSzI1NiIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMCwiZWR4IikpOwoJJm1vdgkoImVieCIsJkRXUCg0LCJlZHgiKSk7CgkmdGVzdAkoImVjeCIsMTw8MjApOwkJIyBjaGVjayBmb3IgUDQKCSZqbnoJKCZsYWJlbCgibG9vcCIpKTsKCSZhbmQJKCJlY3giLDE8PDMwKTsJCSMgbWFzayAiSW50ZWwgQ1BVIiBiaXQKCSZhbmQJKCJlYngiLDE8PDI4fDE8PDkpOwkjIG1hc2sgQVZYIGFuZCBTU1NFMyBiaXRzCgkmb3IJKCJlY3giLCJlYngiKTsKCSZhbmQJKCJlY3giLDE8PDI4fDE8PDMwKTsKCSZjbXAJKCJlY3giLDE8PDI4fDE8PDMwKTsKCQkJCQlpZiAoJHhtbSkgewoJJmplCSgmbGFiZWwoIkFWWCIpKQkJaWYgKCRhdngpOwoJJnRlc3QJKCJlYngiLDE8PDkpOwkJIyBjaGVjayBmb3IgU1NTRTMKCSZqbnoJKCZsYWJlbCgiU1NTRTMiKSk7CgkJCQkJfSBlbHNlIHsKCSZqZQkoJmxhYmVsKCJsb29wX3NocmQiKSk7CgkJCQkJfQoJCQkJCQlpZiAoJHVucm9sbF9hZnRlcikgewoJJnN1YgkoImVheCIsImVkaSIpOwoJJmNtcAkoImVheCIsJHVucm9sbF9hZnRlcik7CgkmamFlCSgmbGFiZWwoInVucm9sbGVkIikpOwoJCQkJCQl9IH0KCSZqbXAJKCZsYWJlbCgibG9vcCIpKTsKCnN1YiBDT01QQUNUX0xPT1AoKSB7Cm15ICRzdWZmaXg9c2hpZnQ7Cgomc2V0X2xhYmVsKCJsb29wJHN1ZmZpeCIsJHN1ZmZpeD8zMjoxNik7CiAgICAjIGNvcHkgaW5wdXQgYmxvY2sgdG8gc3RhY2sgcmV2ZXJzaW5nIGJ5dGUgYW5kIGR3b3JkIG9yZGVyCiAgICBmb3IoJGk9MDskaTw0OyRpKyspIHsKCSZtb3YJKCJlYXgiLCZEV1AoJGkqMTYrMCwiZWRpIikpOwoJJm1vdgkoImVieCIsJkRXUCgkaSoxNis0LCJlZGkiKSk7CgkmbW92CSgiZWN4IiwmRFdQKCRpKjE2KzgsImVkaSIpKTsKCSZic3dhcAkoImVheCIpOwoJJm1vdgkoImVkeCIsJkRXUCgkaSoxNisxMiwiZWRpIikpOwoJJmJzd2FwCSgiZWJ4Iik7CgkmcHVzaAkoImVheCIpOwoJJmJzd2FwCSgiZWN4Iik7CgkmcHVzaAkoImVieCIpOwoJJmJzd2FwCSgiZWR4Iik7CgkmcHVzaAkoImVjeCIpOwoJJnB1c2gJKCJlZHgiKTsKICAgIH0KCSZhZGQJKCJlZGkiLDY0KTsKCSZsZWEJKCJlc3AiLCZEV1AoLTQqOSwiZXNwIikpOyMgcGxhY2UgZm9yIEEsQixDLEQsRSxGLEcsSAoJJm1vdgkoJkRXUCg0Kig5KzE2KSs0LCJlc3AiKSwiZWRpIik7CgoJIyBjb3B5IGN0eC0+aFswLTddIHRvIEEsQixDLEQsRSxGLEcsSCBvbiBzdGFjawoJJm1vdgkoJEEsJkRXUCgwLCJlc2kiKSk7CgkmbW92CSgiZWJ4IiwmRFdQKDQsImVzaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoOCwiZXNpIikpOwoJJm1vdgkoImVkaSIsJkRXUCgxMiwiZXNpIikpOwoJIyAmbW92CSgkQW9mZiwkQSk7CgkmbW92CSgkQm9mZiwiZWJ4Iik7CgkmeG9yCSgiZWJ4IiwiZWN4Iik7CgkmbW92CSgkQ29mZiwiZWN4Iik7CgkmbW92CSgkRG9mZiwiZWRpIik7CgkmbW92CSgmRFdQKDAsImVzcCIpLCJlYngiKTsJIyBtYWdpYwoJJm1vdgkoJEUsJkRXUCgxNiwiZXNpIikpOwkKCSZtb3YJKCJlYngiLCZEV1AoMjAsImVzaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoMjQsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjgsImVzaSIpKTsKCSMgJm1vdgkoJEVvZmYsJEUpOwoJJm1vdgkoJEZvZmYsImVieCIpOwoJJm1vdgkoJEdvZmYsImVjeCIpOwoJJm1vdgkoJEhvZmYsImVkaSIpOwoKJnNldF9sYWJlbCgiMDBfMTUkc3VmZml4IiwxNik7CgoJJkJPRFlfMDBfMTUoKTsKCgkmY21wCSgiZXNpIiwweGMxOWJmMTc0KTsKCSZqbmUJKCZsYWJlbCgiMDBfMTUkc3VmZml4IikpOwoKCSZtb3YJKCJlY3giLCZEV1AoNCooOSsxNSsxNi0xKSwiZXNwIikpOwkjIHByZWxvYWRlZCBpbiBCT0RZXzAwXzE1KDEpCgkmam1wCSgmbGFiZWwoIjE2XzYzJHN1ZmZpeCIpKTsKCiZzZXRfbGFiZWwoIjE2XzYzJHN1ZmZpeCIsMTYpOwoKCSZCT0RZXzE2XzYzKCk7CgoJJmNtcAkoImVzaSIsMHhjNjcxNzhmMik7Cgkmam5lCSgmbGFiZWwoIjE2XzYzJHN1ZmZpeCIpKTsKCgkmbW92CSgiZXNpIiwmRFdQKDQqKDkrMTYrNjQpKzAsImVzcCIpKTsjY3R4CgkjICZtb3YJKCRBLCRBb2ZmKTsKCSZtb3YJKCJlYngiLCRCb2ZmKTsKCSMgJm1vdgkoImVkaSIsJENvZmYpOwoJJm1vdgkoImVjeCIsJERvZmYpOwoJJmFkZAkoJEEsJkRXUCgwLCJlc2kiKSk7CgkmYWRkCSgiZWJ4IiwmRFdQKDQsImVzaSIpKTsKCSZhZGQJKCJlZGkiLCZEV1AoOCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgxMiwiZXNpIikpOwoJJm1vdgkoJkRXUCgwLCJlc2kiKSwkQSk7CgkmbW92CSgmRFdQKDQsImVzaSIpLCJlYngiKTsKCSZtb3YJKCZEV1AoOCwiZXNpIiksImVkaSIpOwoJJm1vdgkoJkRXUCgxMiwiZXNpIiksImVjeCIpOwoJIyAmbW92CSgkRSwkRW9mZik7CgkmbW92CSgiZWF4IiwkRm9mZik7CgkmbW92CSgiZWJ4IiwkR29mZik7CgkmbW92CSgiZWN4IiwkSG9mZik7CgkmbW92CSgiZWRpIiwmRFdQKDQqKDkrMTYrNjQpKzQsImVzcCIpKTsjaW5wCgkmYWRkCSgkRSwmRFdQKDE2LCJlc2kiKSk7CgkmYWRkCSgiZWF4IiwmRFdQKDIwLCJlc2kiKSk7CgkmYWRkCSgiZWJ4IiwmRFdQKDI0LCJlc2kiKSk7CgkmYWRkCSgiZWN4IiwmRFdQKDI4LCJlc2kiKSk7CgkmbW92CSgmRFdQKDE2LCJlc2kiKSwkRSk7CgkmbW92CSgmRFdQKDIwLCJlc2kiKSwiZWF4Iik7CgkmbW92CSgmRFdQKDI0LCJlc2kiKSwiZWJ4Iik7CgkmbW92CSgmRFdQKDI4LCJlc2kiKSwiZWN4Iik7CgoJJmxlYQkoImVzcCIsJkRXUCg0Kig5KzE2KzY0KSwiZXNwIikpOyMgZGVzdHJveSBmcmFtZQoJJnN1YgkoJEsyNTYsNCo2NCk7CQkJIyByZXdpbmQgSwoKCSZjbXAJKCJlZGkiLCZEV1AoOCwiZXNwIikpOwkJIyBhcmUgd2UgZG9uZSB5ZXQ/CgkmamIJKCZsYWJlbCgibG9vcCRzdWZmaXgiKSk7Cn0KCSZDT01QQUNUX0xPT1AoKTsKCSZtb3YJKCJlc3AiLCZEV1AoMTIsImVzcCIpKTsJCSMgcmVzdG9yZSBzcAomZnVuY3Rpb25fZW5kX0EoKTsKCQkJCQkJaWYgKCEkaTM4NiAmJiAhJHhtbSkgewoJIyB+MjAlIGltcHJvdmVtZW50IG9uIFNhbmR5IEJyaWRnZQoJbG9jYWwgKnJvciA9IHN1YiB7ICZzaHJkKEBfWzBdLEBfKSB9OwoJJkNPTVBBQ1RfTE9PUCgiX3NocmQiKTsKCSZtb3YJKCJlc3AiLCZEV1AoMTIsImVzcCIpKTsJCSMgcmVzdG9yZSBzcAomZnVuY3Rpb25fZW5kX0EoKTsKCQkJCQkJfQoKJnNldF9sYWJlbCgiSzI1NiIsNjQpOwkjIFllcyEgSSBrZWVwIGl0IGluIHRoZSBjb2RlIHNlZ21lbnQhCkBLMjU2PSgJMHg0MjhhMmY5OCwweDcxMzc0NDkxLDB4YjVjMGZiY2YsMHhlOWI1ZGJhNSwKCTB4Mzk1NmMyNWIsMHg1OWYxMTFmMSwweDkyM2Y4MmE0LDB4YWIxYzVlZDUsCgkweGQ4MDdhYTk4LDB4MTI4MzViMDEsMHgyNDMxODViZSwweDU1MGM3ZGMzLAoJMHg3MmJlNWQ3NCwweDgwZGViMWZlLDB4OWJkYzA2YTcsMHhjMTliZjE3NCwKCTB4ZTQ5YjY5YzEsMHhlZmJlNDc4NiwweDBmYzE5ZGM2LDB4MjQwY2ExY2MsCgkweDJkZTkyYzZmLDB4NGE3NDg0YWEsMHg1Y2IwYTlkYywweDc2Zjk4OGRhLAoJMHg5ODNlNTE1MiwweGE4MzFjNjZkLDB4YjAwMzI3YzgsMHhiZjU5N2ZjNywKCTB4YzZlMDBiZjMsMHhkNWE3OTE0NywweDA2Y2E2MzUxLDB4MTQyOTI5NjcsCgkweDI3YjcwYTg1LDB4MmUxYjIxMzgsMHg0ZDJjNmRmYywweDUzMzgwZDEzLAoJMHg2NTBhNzM1NCwweDc2NmEwYWJiLDB4ODFjMmM5MmUsMHg5MjcyMmM4NSwKCTB4YTJiZmU4YTEsMHhhODFhNjY0YiwweGMyNGI4YjcwLDB4Yzc2YzUxYTMsCgkweGQxOTJlODE5LDB4ZDY5OTA2MjQsMHhmNDBlMzU4NSwweDEwNmFhMDcwLAoJMHgxOWE0YzExNiwweDFlMzc2YzA4LDB4Mjc0ODc3NGMsMHgzNGIwYmNiNSwKCTB4MzkxYzBjYjMsMHg0ZWQ4YWE0YSwweDViOWNjYTRmLDB4NjgyZTZmZjMsCgkweDc0OGY4MmVlLDB4NzhhNTYzNmYsMHg4NGM4NzgxNCwweDhjYzcwMjA4LAoJMHg5MGJlZmZmYSwweGE0NTA2Y2ViLDB4YmVmOWEzZjcsMHhjNjcxNzhmMgkpOwomZGF0YV93b3JkKEBLMjU2KTsKJmRhdGFfd29yZCgweDAwMDEwMjAzLDB4MDQwNTA2MDcsMHgwODA5MGEwYiwweDBjMGQwZTBmKTsJIyBieXRlIHN3YXAgbWFzawomYXNjaXooIlNIQTI1NiBibG9jayB0cmFuc2Zvcm0gZm9yIHg4NiwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIpOwoKKCRhLCRiLCRjLCRkLCRlLCRmLCRnLCRoKT0oMC4uNyk7CSMgb2Zmc2V0cwpzdWIgb2ZmIHsgJkRXUCg0KigoKHNoaWZ0KS0kaSkmNyksImVzcCIpOyB9CgppZiAoISRpMzg2ICYmICR1bnJvbGxfYWZ0ZXIpIHsKbXkgQEFIPSgkQSwkSzI1Nik7Cgomc2V0X2xhYmVsKCJ1bnJvbGxlZCIsMTYpOwoJJmxlYQkoImVzcCIsJkRXUCgtOTYsImVzcCIpKTsKCSMgY29weSBjdHgtPmhbMC03XSB0byBBLEIsQyxELEUsRixHLEggb24gc3RhY2sKCSZtb3YJKCRBSFswXSwmRFdQKDAsImVzaSIpKTsKCSZtb3YJKCRBSFsxXSwmRFdQKDQsImVzaSIpKTsKCSZtb3YJKCJlY3giLCZEV1AoOCwiZXNpIikpOwoJJm1vdgkoImVieCIsJkRXUCgxMiwiZXNpIikpOwoJIyZtb3YJKCZEV1AoMCwiZXNwIiksJEFIWzBdKTsKCSZtb3YJKCZEV1AoNCwiZXNwIiksJEFIWzFdKTsKCSZ4b3IJKCRBSFsxXSwiZWN4Iik7CQkjIG1hZ2ljCgkmbW92CSgmRFdQKDgsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMTIsImVzcCIpLCJlYngiKTsKCSZtb3YJKCRFLCZEV1AoMTYsImVzaSIpKTsJCgkmbW92CSgiZWJ4IiwmRFdQKDIwLCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDI0LCJlc2kiKSk7CgkmbW92CSgiZXNpIiwmRFdQKDI4LCJlc2kiKSk7CgkjJm1vdgkoJkRXUCgxNiwiZXNwIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNwIiksImVieCIpOwoJJm1vdgkoJkRXUCgyNCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNwIiksImVzaSIpOwoJJmptcAkoJmxhYmVsKCJncmFuZF9sb29wIikpOwoKJnNldF9sYWJlbCgiZ3JhbmRfbG9vcCIsMTYpOwogICAgIyBjb3B5IGlucHV0IGJsb2NrIHRvIHN0YWNrIHJldmVyc2luZyBieXRlIG9yZGVyCiAgICBmb3IoJGk9MDskaTw1OyRpKyspIHsKCSZtb3YJKCJlYngiLCZEV1AoMTIqJGkrMCwiZWRpIikpOwoJJm1vdgkoImVjeCIsJkRXUCgxMiokaSs0LCJlZGkiKSk7CgkmYnN3YXAJKCJlYngiKTsKCSZtb3YJKCJlc2kiLCZEV1AoMTIqJGkrOCwiZWRpIikpOwoJJmJzd2FwCSgiZWN4Iik7CgkmbW92CSgmRFdQKDMyKzEyKiRpKzAsImVzcCIpLCJlYngiKTsKCSZic3dhcAkoImVzaSIpOwoJJm1vdgkoJkRXUCgzMisxMiokaSs0LCJlc3AiKSwiZWN4Iik7CgkmbW92CSgmRFdQKDMyKzEyKiRpKzgsImVzcCIpLCJlc2kiKTsKICAgIH0KCSZtb3YJKCJlYngiLCZEV1AoJGkqMTIsImVkaSIpKTsKCSZhZGQJKCJlZGkiLDY0KTsKCSZic3dhcAkoImVieCIpOwoJJm1vdgkoJkRXUCg5Nis0LCJlc3AiKSwiZWRpIik7CgkmbW92CSgmRFdQKDMyKzEyKiRpLCJlc3AiKSwiZWJ4Iik7CgogICAgbXkgKCR0MSwkdDIpID0gKCJlY3giLCJlc2kiKTsKCiAgICBmb3IgKCRpPTA7JGk8NjQ7JGkrKykgewoKICAgICAgaWYgKCRpPj0xNikgewoJJm1vdgkoJFQsJHQxKTsJCQkjICR0MSBpcyBwcmVsb2FkZWQKCSMgJm1vdgkoJHQyLCZEV1AoMzIrNCooKCRpKzE0KSYxNSksImVzcCIpKTsKCSZyb3IJKCR0MSwxOC03KTsKCSAmbW92CSgiZWRpIiwkdDIpOwoJJnJvcgkoJHQyLDE5LTE3KTsKCSAmeG9yCSgkdDEsJFQpOwoJICZzaHIJKCRULDMpOwoJJnJvcgkoJHQxLDcpOwoJICZ4b3IJKCR0MiwiZWRpIik7CgkgJnhvcgkoJFQsJHQxKTsJCQkjIFQgPSBzaWdtYTAoWFstMTVdKQoJJnJvcgkoJHQyLDE3KTsKCSAmYWRkCSgkVCwmRFdQKDMyKzQqKCRpJjE1KSwiZXNwIikpOwkjIFQgKz0gWFstMTZdCgkmc2hyCSgiZWRpIiwxMCk7CgkgJmFkZAkoJFQsJkRXUCgzMis0KigoJGkrOSkmMTUpLCJlc3AiKSk7CSMgVCArPSBYWy03XQoJIyZ4b3IJKCJlZGkiLCR0MikJCQkjIHNpZ21hMShYWy0yXSkKCSMgJmFkZAkoJFQsImVkaSIpOwkJCSMgVCArPSBzaWdtYTEoWFstMl0pCgkjICZtb3YJKCZEV1AoNCooOSsxNSksImVzcCIpLCRUKTsJIyBzYXZlIFhbMF0KICAgICAgfQoJJm1vdgkoJHQxLCRFKTsKCSAmeG9yCSgiZWRpIiwkdDIpCQkJaWYgKCRpPj0xNik7CSMgc2lnbWExKFhbLTJdKQoJICZtb3YJKCR0Miwmb2ZmKCRmKSk7Cgkmcm9yCSgkRSwyNS0xMSk7CgkgJmFkZAkoJFQsImVkaSIpCQkJaWYgKCRpPj0xNik7CSMgVCArPSBzaWdtYTEoWFstMl0pCgkgJm1vdgkoImVkaSIsJm9mZigkZykpOwoJJnhvcgkoJEUsJHQxKTsKCSAmbW92CSgkVCwmRFdQKDMyKzQqKCRpJjE1KSwiZXNwIikpCWlmICgkaTwxNik7CSMgWFtpXQoJICZtb3YJKCZEV1AoMzIrNCooJGkmMTUpLCJlc3AiKSwkVCkJaWYgKCRpPj0xNiAmJiAkaTw2Mik7CSMgc2F2ZSBYWzBdCgkgJnhvcgkoJHQyLCJlZGkiKTsKCSZyb3IJKCRFLDExLTYpOwoJICZhbmQJKCR0MiwkdDEpOwoJICZtb3YJKCZvZmYoJGUpLCR0MSk7CQkjIHNhdmUgJEUsIG1vZHVsby1zY2hlZHVsZWQKCSZ4b3IJKCRFLCR0MSk7CgkgJmFkZAkoJFQsJm9mZigkaCkpOwkJIyBUICs9IGgKCSAmeG9yCSgiZWRpIiwkdDIpOwkJIyBDaChlLGYsZykKCSZyb3IJKCRFLDYpOwkJCSMgU2lnbWExKGUpCgkgJm1vdgkoJHQxLCRBSFswXSk7CgkgJmFkZAkoJFQsImVkaSIpOwkJIyBUICs9IENoKGUsZixnKQoKCSZyb3IJKCR0MSwyMi0xMyk7CgkgJm1vdgkoJHQyLCRBSFswXSk7CgkgJm1vdgkoImVkaSIsJm9mZigkYikpOwoJJnhvcgkoJHQxLCRBSFswXSk7CgkgJm1vdgkoJm9mZigkYSksJEFIWzBdKTsJIyBzYXZlICRBLCBtb2R1bG8tc2NoZWR1bGVkCgkgJnhvcgkoJEFIWzBdLCJlZGkiKTsJCSMgYSBePSBiLCAoYl5jKSBpbiBuZXh0IHJvdW5kCgkmcm9yCSgkdDEsMTMtMik7CgkgJmFuZAkoJEFIWzFdLCRBSFswXSk7CSMgKGJeYykgJj0gKGFeYikKCSAmbGVhCSgkRSwmRFdQKEBLMjU2WyRpXSwkVCwkRSkpOwkjIFQgKz0gU2lnbWExKDEpK0tbaV0KCSZ4b3IJKCR0MSwkdDIpOwoJICZ4b3IJKCRBSFsxXSwiZWRpIik7CQkjIGggPSBNYWooYSxiLGMpID0gQ2goYV5iLGMsYikKCSAmbW92CSgkdDIsJkRXUCgzMis0KigoJGkrMikmMTUpLCJlc3AiKSkJaWYgKCRpPj0xNSAmJiAkaTw2Myk7Cgkmcm9yCSgkdDEsMik7CQkjIFNpZ21hMChhKQoKCSAmYWRkCSgkQUhbMV0sJEUpOwkJIyBoICs9IFQKCSAmYWRkCSgkRSwmb2ZmKCRkKSk7CQkjIGQgKz0gVAoJJmFkZAkoJEFIWzFdLCR0MSk7CQkjIGggKz0gU2lnbWEwKGEpCgkgJm1vdgkoJHQxLCZEV1AoMzIrNCooKCRpKzE1KSYxNSksImVzcCIpKQlpZiAoJGk+PTE1ICYmICRpPDYzKTsKCglAQUggPSByZXZlcnNlKEBBSCk7CQkjIHJvdGF0ZShhLGgpCgkoJHQxLCR0MikgPSAoJHQyLCR0MSk7CQkjIHJvdGF0ZSh0MSx0MikKICAgIH0KCSZtb3YJKCJlc2kiLCZEV1AoOTYsImVzcCIpKTsJI2N0eAoJCQkJCSMmbW92CSgkQUhbMF0sJkRXUCgwLCJlc3AiKSk7CgkmeG9yCSgkQUhbMV0sImVkaSIpOwkJIyZtb3YJKCRBSFsxXSwmRFdQKDQsImVzcCIpKTsKCQkJCQkjJm1vdgkoImVkaSIsICZEV1AoOCwiZXNwIikpOwoJJm1vdgkoImVjeCIsJkRXUCgxMiwiZXNwIikpOwoJJmFkZAkoJEFIWzBdLCZEV1AoMCwiZXNpIikpOwoJJmFkZAkoJEFIWzFdLCZEV1AoNCwiZXNpIikpOwoJJmFkZAkoImVkaSIsJkRXUCg4LCJlc2kiKSk7CgkmYWRkCSgiZWN4IiwmRFdQKDEyLCJlc2kiKSk7CgkmbW92CSgmRFdQKDAsImVzaSIpLCRBSFswXSk7CgkmbW92CSgmRFdQKDQsImVzaSIpLCRBSFsxXSk7CgkmbW92CSgmRFdQKDgsImVzaSIpLCJlZGkiKTsKCSZtb3YJKCZEV1AoMTIsImVzaSIpLCJlY3giKTsKCSAjJm1vdgkoJkRXUCgwLCJlc3AiKSwkQUhbMF0pOwoJICZtb3YJKCZEV1AoNCwiZXNwIiksJEFIWzFdKTsKCSAmeG9yCSgkQUhbMV0sImVkaSIpOwkJIyBtYWdpYwoJICZtb3YJKCZEV1AoOCwiZXNwIiksImVkaSIpOwoJICZtb3YJKCZEV1AoMTIsImVzcCIpLCJlY3giKTsKCSMmbW92CSgkRSwmRFdQKDE2LCJlc3AiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDIwLCJlc3AiKSk7CgkmbW92CSgiZWJ4IiwmRFdQKDI0LCJlc3AiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDI4LCJlc3AiKSk7CgkmYWRkCSgkRSwmRFdQKDE2LCJlc2kiKSk7CgkmYWRkCSgiZWRpIiwmRFdQKDIwLCJlc2kiKSk7CgkmYWRkCSgiZWJ4IiwmRFdQKDI0LCJlc2kiKSk7CgkmYWRkCSgiZWN4IiwmRFdQKDI4LCJlc2kiKSk7CgkmbW92CSgmRFdQKDE2LCJlc2kiKSwkRSk7CgkmbW92CSgmRFdQKDIwLCJlc2kiKSwiZWRpIik7CgkmbW92CSgmRFdQKDI0LCJlc2kiKSwiZWJ4Iik7CgkmbW92CSgmRFdQKDI4LCJlc2kiKSwiZWN4Iik7CgkgIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSAmbW92CSgmRFdQKDIwLCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDk2KzQsImVzcCIpKTsJIyBpbnAKCSAmbW92CSgmRFdQKDI0LCJlc3AiKSwiZWJ4Iik7CgkgJm1vdgkoJkRXUCgyOCwiZXNwIiksImVjeCIpOwoKCSZjbXAJKCJlZGkiLCZEV1AoOTYrOCwiZXNwIikpOwkjIGFyZSB3ZSBkb25lIHlldD8KCSZqYgkoJmxhYmVsKCJncmFuZF9sb29wIikpOwoKCSZtb3YJKCJlc3AiLCZEV1AoOTYrMTIsImVzcCIpKTsJIyByZXN0b3JlIHNwCiZmdW5jdGlvbl9lbmRfQSgpOwp9CgkJCQkJCWlmICghJGkzODYgJiYgJHhtbSkge3t7Cm15IEBYID0gbWFwKCJ4bW0kXyIsKDAuLjMpKTsKbXkgKCR0MCwkdDEsJHQyLCR0MykgPSBtYXAoInhtbSRfIiwoNC4uNykpOwpteSBAQUggPSAoJEEsJFQpOwoKJnNldF9sYWJlbCgiU1NTRTMiLDMyKTsKCSZsZWEJKCJlc3AiLCZEV1AoLTk2LCJlc3AiKSk7CgkjIGNvcHkgY3R4LT5oWzAtN10gdG8gQSxCLEMsRCxFLEYsRyxIIG9uIHN0YWNrCgkmbW92CSgkQUhbMF0sJkRXUCgwLCJlc2kiKSk7CgkmbW92CSgkQUhbMV0sJkRXUCg0LCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDgsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMTIsImVzaSIpKTsKCSMmbW92CSgmRFdQKDAsImVzcCIpLCRBSFswXSk7CgkmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkmeG9yCSgkQUhbMV0sImVjeCIpOwkJCSMgbWFnaWMKCSZtb3YJKCZEV1AoOCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgxMiwiZXNwIiksImVkaSIpOwoJJm1vdgkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJm1vdgkoImVkaSIsJkRXUCgyMCwiZXNpIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyNCwiZXNpIikpOwoJJm1vdgkoImVzaSIsJkRXUCgyOCwiZXNpIikpOwoJIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSZtb3YJKCZEV1AoMjAsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCJlZGkiLCZEV1AoOTYrNCwiZXNwIikpOwkjIGlucAoJJm1vdgkoJkRXUCgyNCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNwIiksImVzaSIpOwoJJm1vdmRxYQkoJHQzLCZRV1AoMjU2LCRLMjU2KSk7Cgkmam1wCSgmbGFiZWwoImdyYW5kX3Nzc2UzIikpOwoKJnNldF9sYWJlbCgiZ3JhbmRfc3NzZTMiLDE2KTsKCSMgbG9hZCBpbnB1dCwgcmV2ZXJzZSBieXRlIG9yZGVyLCBhZGQgSzI1NlswLi4xNV0sIHNhdmUgdG8gc3RhY2sKCSZtb3ZkcXUJKEBYWzBdLCZRV1AoMCwiZWRpIikpOwoJJm1vdmRxdQkoQFhbMV0sJlFXUCgxNiwiZWRpIikpOwoJJm1vdmRxdQkoQFhbMl0sJlFXUCgzMiwiZWRpIikpOwoJJm1vdmRxdQkoQFhbM10sJlFXUCg0OCwiZWRpIikpOwoJJmFkZAkoImVkaSIsNjQpOwoJJnBzaHVmYgkoQFhbMF0sJHQzKTsKCSZtb3YJKCZEV1AoOTYrNCwiZXNwIiksImVkaSIpOwoJJnBzaHVmYgkoQFhbMV0sJHQzKTsKCSZtb3ZkcWEJKCR0MCwmUVdQKDAsJEsyNTYpKTsKCSZwc2h1ZmIJKEBYWzJdLCR0Myk7CgkmbW92ZHFhCSgkdDEsJlFXUCgxNiwkSzI1NikpOwoJJnBhZGRkCSgkdDAsQFhbMF0pOwoJJnBzaHVmYgkoQFhbM10sJHQzKTsKCSZtb3ZkcWEJKCR0MiwmUVdQKDMyLCRLMjU2KSk7CgkmcGFkZGQJKCR0MSxAWFsxXSk7CgkmbW92ZHFhCSgkdDMsJlFXUCg0OCwkSzI1NikpOwoJJm1vdmRxYQkoJlFXUCgzMiswLCJlc3AiKSwkdDApOwoJJnBhZGRkCSgkdDIsQFhbMl0pOwoJJm1vdmRxYQkoJlFXUCgzMisxNiwiZXNwIiksJHQxKTsKCSZwYWRkZAkoJHQzLEBYWzNdKTsKCSZtb3ZkcWEJKCZRV1AoMzIrMzIsImVzcCIpLCR0Mik7CgkmbW92ZHFhCSgmUVdQKDMyKzQ4LCJlc3AiKSwkdDMpOwoJJmptcAkoJmxhYmVsKCJzc3NlM18wMF80NyIpKTsKCiZzZXRfbGFiZWwoInNzc2UzXzAwXzQ3IiwxNik7CgkmYWRkCQkoJEsyNTYsNjQpOwoKc3ViIFNTU0UzXzAwXzQ3ICgpIHsKbXkgJGogPSBzaGlmdDsKbXkgJGJvZHkgPSBzaGlmdDsKbXkgQFggPSBAXzsKbXkgQGluc25zID0gKCYkYm9keSwmJGJvZHksJiRib2R5LCYkYm9keSk7CSMgMTIwIGluc3RydWN0aW9ucwoKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZtb3ZkcWEJCSgkdDAsQFhbMV0pOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJm1vdmRxYQkJKCR0MyxAWFszXSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmcGFsaWducgkoJHQwLEBYWzBdLDQpOwkJIyBYWzEuLjRdCgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBhbGlnbnIJKCR0MyxAWFsyXSw0KTsJCSMgWFs5Li4xMl0KCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZtb3ZkcWEJCSgkdDEsJHQwKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZtb3ZkcWEJCSgkdDIsJHQwKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSZwc3JsZAkJKCR0MCwzKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAmcGFkZGQJCShAWFswXSwkdDMpOwkJIyBYWzAuLjNdICs9IFhbOS4uMTJdCgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmcHNybGQJCSgkdDIsNyk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzaHVmZAkoJHQzLEBYWzNdLDBiMTExMTEwMTApOwkjIFhbMTQuLjE1XQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBzbGxkCQkoJHQxLDMyLTE4KTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSZweG9yCQkoJHQwLCR0Mik7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmcHNybGQJCSgkdDIsMTgtNyk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkmcHhvcgkJKCR0MCwkdDEpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBzbGxkCQkoJHQxLDE4LTcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJJnB4b3IJCSgkdDAsJHQyKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmbW92ZHFhCSgkdDIsJHQzKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSZweG9yCQkoJHQwLCR0MSk7CQkjIHNpZ21hMChYWzEuLjRdKQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc3JsZAkJKCR0MywxMCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkmcGFkZGQJCShAWFswXSwkdDApOwkJIyBYWzAuLjNdICs9IHNpZ21hMChYWzEuLjRdKQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc3JscQkJKCR0MiwxNyk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgJnB4b3IJCSgkdDMsJHQyKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmcHNybHEJCSgkdDIsMTktMTcpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICZweG9yCQkoJHQzLCR0Mik7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzaHVmZAkoJHQzLCR0MywwYjEwMDAwMDAwKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmcHNybGRxCSgkdDMsOCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkmcGFkZGQJCShAWFswXSwkdDMpOwkJIyBYWzAuLjFdICs9IHNpZ21hMShYWzE0Li4xNV0pCgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzaHVmZAkoJHQzLEBYWzBdLDBiMDEwMTAwMDApOwkjIFhbMTYuLjE3XQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZtb3ZkcWEJKCR0MiwkdDMpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICZwc3JsZAkJKCR0MywxMCk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzcmxxCQkoJHQyLDE3KTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCSAmcHhvcgkJKCR0MywkdDIpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICZwc3JscQkJKCR0MiwxOS0xNyk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CQkJIyBACgkgJnB4b3IJCSgkdDMsJHQyKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAmcHNodWZkCSgkdDMsJHQzLDBiMDAwMDEwMDApOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJJm1vdmRxYQkJKCR0MiwmUVdQKDE2KiRqLCRLMjU2KSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgJnBzbGxkcQkoJHQzLDgpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwkJCSMgQAoJJnBhZGRkCQkoQFhbMF0sJHQzKTsJCSMgWFsyLi4zXSArPSBzaWdtYTEoWFsxNi4uMTddKQoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJICBldmFsKHNoaWZ0KEBpbnNucykpOwoJJnBhZGRkCQkoJHQyLEBYWzBdKTsKCSAgZXZhbChzaGlmdChAaW5zbnMpKTsJCQkjIEAKCglmb3JlYWNoIChAaW5zbnMpIHsgZXZhbDsgfQkJIyByZW1haW5pbmcgaW5zdHJ1Y3Rpb25zCgoJJm1vdmRxYQkJKCZRV1AoMzIrMTYqJGosImVzcCIpLCR0Mik7Cn0KCnN1YiBib2R5XzAwXzE1ICgpIHsKCSgKCScmbW92CSgiZWN4IiwkRSk7JywKCScmcm9yCSgkRSwyNS0xMSk7JywKCSAnJm1vdgkoImVzaSIsJm9mZigkZikpOycsCgknJnhvcgkoJEUsImVjeCIpOycsCgkgJyZtb3YJKCJlZGkiLCZvZmYoJGcpKTsnLAoJICcmeG9yCSgiZXNpIiwiZWRpIik7JywKCScmcm9yCSgkRSwxMS02KTsnLAoJICcmYW5kCSgiZXNpIiwiZWN4Iik7JywKCSAnJm1vdgkoJm9mZigkZSksImVjeCIpOycsCSMgc2F2ZSAkRSwgbW9kdWxvLXNjaGVkdWxlZAoJJyZ4b3IJKCRFLCJlY3giKTsnLAoJICcmeG9yCSgiZWRpIiwiZXNpIik7JywJIyBDaChlLGYsZykKCScmcm9yCSgkRSw2KTsnLAkJIyBUID0gU2lnbWExKGUpCgkgJyZtb3YJKCJlY3giLCRBSFswXSk7JywKCSAnJmFkZAkoJEUsImVkaSIpOycsCQkjIFQgKz0gQ2goZSxmLGcpCgkgJyZtb3YJKCJlZGkiLCZvZmYoJGIpKTsnLAoJJyZtb3YJKCJlc2kiLCRBSFswXSk7JywKCgknJnJvcgkoImVjeCIsMjItMTMpOycsCgkgJyZtb3YJKCZvZmYoJGEpLCRBSFswXSk7JywJIyBzYXZlICRBLCBtb2R1bG8tc2NoZWR1bGVkCgknJnhvcgkoImVjeCIsJEFIWzBdKTsnLAoJICcmeG9yCSgkQUhbMF0sImVkaSIpOycsCSMgYSBePSBiLCAoYl5jKSBpbiBuZXh0IHJvdW5kCgkgJyZhZGQJKCRFLCZvZmYoJGgpKTsnLAkjIFQgKz0gaAoJJyZyb3IJKCJlY3giLDEzLTIpOycsCgkgJyZhbmQJKCRBSFsxXSwkQUhbMF0pOycsCSMgKGJeYykgJj0gKGFeYikKCScmeG9yCSgiZWN4IiwiZXNpIik7JywKCSAnJmFkZAkoJEUsJkRXUCgzMis0KigkaSYxNSksImVzcCIpKTsnLAkjIFQgKz0gS1tpXStYW2ldCgkgJyZ4b3IJKCRBSFsxXSwiZWRpIik7JywJIyBoID0gTWFqKGEsYixjKSA9IENoKGFeYixjLGIpCgknJnJvcgkoImVjeCIsMik7JywJCSMgU2lnbWEwKGEpCgoJICcmYWRkCSgkQUhbMV0sJEUpOycsCQkjIGggKz0gVAoJICcmYWRkCSgkRSwmb2ZmKCRkKSk7JywJIyBkICs9IFQKCScmYWRkCSgkQUhbMV0sImVjeCIpOycuCSMgaCArPSBTaWdtYTAoYSkKCgknQEFIID0gcmV2ZXJzZShAQUgpOyAkaSsrOycJIyByb3RhdGUoYSxoKQoJKTsKfQoKICAgIGZvciAoJGk9MCwkaj0wOyAkajw0OyAkaisrKSB7CgkmU1NTRTNfMDBfNDcoJGosXCZib2R5XzAwXzE1LEBYKTsKCXB1c2goQFgsc2hpZnQoQFgpKTsJCSMgcm90YXRlKEBYKQogICAgfQoJJmNtcAkoJkRXUCgxNiokaiwkSzI1NiksMHgwMDAxMDIwMyk7Cgkmam5lCSgmbGFiZWwoInNzc2UzXzAwXzQ3IikpOwoKICAgIGZvciAoJGk9MDsgJGk8MTY7ICkgewoJZm9yZWFjaChib2R5XzAwXzE1KCkpIHsgZXZhbDsgfQogICAgfQoKCSZtb3YJKCJlc2kiLCZEV1AoOTYsImVzcCIpKTsJI2N0eAoJCQkJCSMmbW92CSgkQUhbMF0sJkRXUCgwLCJlc3AiKSk7CgkmeG9yCSgkQUhbMV0sImVkaSIpOwkJIyZtb3YJKCRBSFsxXSwmRFdQKDQsImVzcCIpKTsKCQkJCQkjJm1vdgkoImVkaSIsICZEV1AoOCwiZXNwIikpOwoJJm1vdgkoImVjeCIsJkRXUCgxMiwiZXNwIikpOwoJJmFkZAkoJEFIWzBdLCZEV1AoMCwiZXNpIikpOwoJJmFkZAkoJEFIWzFdLCZEV1AoNCwiZXNpIikpOwoJJmFkZAkoImVkaSIsJkRXUCg4LCJlc2kiKSk7CgkmYWRkCSgiZWN4IiwmRFdQKDEyLCJlc2kiKSk7CgkmbW92CSgmRFdQKDAsImVzaSIpLCRBSFswXSk7CgkmbW92CSgmRFdQKDQsImVzaSIpLCRBSFsxXSk7CgkmbW92CSgmRFdQKDgsImVzaSIpLCJlZGkiKTsKCSZtb3YJKCZEV1AoMTIsImVzaSIpLCJlY3giKTsKCSAjJm1vdgkoJkRXUCgwLCJlc3AiKSwkQUhbMF0pOwoJICZtb3YJKCZEV1AoNCwiZXNwIiksJEFIWzFdKTsKCSAmeG9yCSgkQUhbMV0sImVkaSIpOwkJCSMgbWFnaWMKCSAmbW92CSgmRFdQKDgsImVzcCIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWN4Iik7CgkjJm1vdgkoJEUsJkRXUCgxNiwiZXNwIikpOwoJJm1vdgkoImVkaSIsJkRXUCgyMCwiZXNwIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyNCwiZXNwIikpOwoJJmFkZAkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJmFkZAkoImVkaSIsJkRXUCgyMCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgyNCwiZXNpIikpOwoJJm1vdgkoJkRXUCgxNiwiZXNpIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNpIiksImVkaSIpOwoJICZtb3YJKCZEV1AoMjAsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjgsImVzcCIpKTsKCSZtb3YJKCZEV1AoMjQsImVzaSIpLCJlY3giKTsKCSAjJm1vdgkoJkRXUCgxNiwiZXNwIiksJEUpOwoJJmFkZAkoImVkaSIsJkRXUCgyOCwiZXNpIikpOwoJICZtb3YJKCZEV1AoMjQsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMjgsImVzaSIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDI4LCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDk2KzQsImVzcCIpKTsJIyBpbnAKCgkmbW92ZHFhCSgkdDMsJlFXUCg2NCwkSzI1NikpOwoJJnN1YgkoJEsyNTYsMyo2NCk7CQkJIyByZXdpbmQgSwoJJmNtcAkoImVkaSIsJkRXUCg5Nis4LCJlc3AiKSk7CSMgYXJlIHdlIGRvbmUgeWV0PwoJJmpiCSgmbGFiZWwoImdyYW5kX3Nzc2UzIikpOwoKCSZtb3YJKCJlc3AiLCZEV1AoOTYrMTIsImVzcCIpKTsJIyByZXN0b3JlIHNwCiZmdW5jdGlvbl9lbmRfQSgpOwoJCQkJCQlpZiAoJGF2eCkgewomc2V0X2xhYmVsKCJBVlgiLDMyKTsKCQkJCQkJaWYgKCRhdng+MSkgewoJJm1vdgkoImVkeCIsJkRXUCg4LCJlZHgiKSk7CgkmYW5kCSgiZWR4IiwxPDw4fDE8PDMpOwkJIyBjaGVjayBmb3IgQk1JMitCTUkxCgkmY21wCSgiZWR4IiwxPDw4fDE8PDMpOwoJJmplCSgmbGFiZWwoIkFWWF9CTUkiKSk7CgkJCQkJCX0KCSZsZWEJKCJlc3AiLCZEV1AoLTk2LCJlc3AiKSk7Cgkmdnplcm9hbGwJKCk7CgkjIGNvcHkgY3R4LT5oWzAtN10gdG8gQSxCLEMsRCxFLEYsRyxIIG9uIHN0YWNrCgkmbW92CSgkQUhbMF0sJkRXUCgwLCJlc2kiKSk7CgkmbW92CSgkQUhbMV0sJkRXUCg0LCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDgsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMTIsImVzaSIpKTsKCSMmbW92CSgmRFdQKDAsImVzcCIpLCRBSFswXSk7CgkmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkmeG9yCSgkQUhbMV0sImVjeCIpOwkJCSMgbWFnaWMKCSZtb3YJKCZEV1AoOCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgxMiwiZXNwIiksImVkaSIpOwoJJm1vdgkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJm1vdgkoImVkaSIsJkRXUCgyMCwiZXNpIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyNCwiZXNpIikpOwoJJm1vdgkoImVzaSIsJkRXUCgyOCwiZXNpIikpOwoJIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSZtb3YJKCZEV1AoMjAsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCJlZGkiLCZEV1AoOTYrNCwiZXNwIikpOwkjIGlucAoJJm1vdgkoJkRXUCgyNCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNwIiksImVzaSIpOwoJJnZtb3ZkcWEJKCR0MywmUVdQKDI1NiwkSzI1NikpOwoJJmptcAkoJmxhYmVsKCJncmFuZF9hdngiKSk7Cgomc2V0X2xhYmVsKCJncmFuZF9hdngiLDMyKTsKCSMgbG9hZCBpbnB1dCwgcmV2ZXJzZSBieXRlIG9yZGVyLCBhZGQgSzI1NlswLi4xNV0sIHNhdmUgdG8gc3RhY2sKCSZ2bW92ZHF1CShAWFswXSwmUVdQKDAsImVkaSIpKTsKCSZ2bW92ZHF1CShAWFsxXSwmUVdQKDE2LCJlZGkiKSk7Cgkmdm1vdmRxdQkoQFhbMl0sJlFXUCgzMiwiZWRpIikpOwoJJnZtb3ZkcXUJKEBYWzNdLCZRV1AoNDgsImVkaSIpKTsKCSZhZGQJCSgiZWRpIiw2NCk7CgkmdnBzaHVmYgkoQFhbMF0sQFhbMF0sJHQzKTsKCSZtb3YJCSgmRFdQKDk2KzQsImVzcCIpLCJlZGkiKTsKCSZ2cHNodWZiCShAWFsxXSxAWFsxXSwkdDMpOwoJJnZwc2h1ZmIJKEBYWzJdLEBYWzJdLCR0Myk7CgkmdnBhZGRkCQkoJHQwLEBYWzBdLCZRV1AoMCwkSzI1NikpOwoJJnZwc2h1ZmIJKEBYWzNdLEBYWzNdLCR0Myk7CgkmdnBhZGRkCQkoJHQxLEBYWzFdLCZRV1AoMTYsJEsyNTYpKTsKCSZ2cGFkZGQJCSgkdDIsQFhbMl0sJlFXUCgzMiwkSzI1NikpOwoJJnZwYWRkZAkJKCR0MyxAWFszXSwmUVdQKDQ4LCRLMjU2KSk7Cgkmdm1vdmRxYQkoJlFXUCgzMiswLCJlc3AiKSwkdDApOwoJJnZtb3ZkcWEJKCZRV1AoMzIrMTYsImVzcCIpLCR0MSk7Cgkmdm1vdmRxYQkoJlFXUCgzMiszMiwiZXNwIiksJHQyKTsKCSZ2bW92ZHFhCSgmUVdQKDMyKzQ4LCJlc3AiKSwkdDMpOwoJJmptcAkJKCZsYWJlbCgiYXZ4XzAwXzQ3IikpOwoKJnNldF9sYWJlbCgiYXZ4XzAwXzQ3IiwxNik7CgkmYWRkCQkoJEsyNTYsNjQpOwoKc3ViIFh1cGRhdGVfQVZYICgpIHsKCSgKCScmdnBhbGlnbnIJKCR0MCxAWFsxXSxAWFswXSw0KTsnLAkjIFhbMS4uNF0KCSAnJnZwYWxpZ25yCSgkdDMsQFhbM10sQFhbMl0sNCk7JywJIyBYWzkuLjEyXQoJJyZ2cHNybGQJKCR0MiwkdDAsNyk7JywKCSAnJnZwYWRkZAkoQFhbMF0sQFhbMF0sJHQzKTsnLAkjIFhbMC4uM10gKz0gWFs5Li4xNl0KCScmdnBzcmxkCSgkdDMsJHQwLDMpOycsCgknJnZwc2xsZAkoJHQxLCR0MCwxNCk7JywKCScmdnB4b3IJCSgkdDAsJHQzLCR0Mik7JywKCSAnJnZwc2h1ZmQJKCR0MyxAWFszXSwwYjExMTExMDEwKScsIyBYWzE0Li4xNV0KCScmdnBzcmxkCSgkdDIsJHQyLDE4LTcpOycsCgknJnZweG9yCQkoJHQwLCR0MCwkdDEpOycsCgknJnZwc2xsZAkoJHQxLCR0MSwyNS0xNCk7JywKCScmdnB4b3IJCSgkdDAsJHQwLCR0Mik7JywKCSAnJnZwc3JsZAkoJHQyLCR0MywxMCk7JywKCScmdnB4b3IJCSgkdDAsJHQwLCR0MSk7JywJIyBzaWdtYTAoWFsxLi40XSkKCSAnJnZwc3JscQkoJHQxLCR0MywxNyk7JywKCScmdnBhZGRkCShAWFswXSxAWFswXSwkdDApOycsCSMgWFswLi4zXSArPSBzaWdtYTAoWFsxLi40XSkKCSAnJnZweG9yCSgkdDIsJHQyLCR0MSk7JywKCSAnJnZwc3JscQkoJHQzLCR0MywxOSk7JywKCSAnJnZweG9yCSgkdDIsJHQyLCR0Myk7JywJIyBzaWdtYTEoWFsxNC4uMTVdCgkgJyZ2cHNodWZkCSgkdDMsJHQyLDBiMTAwMDAxMDApOycsCgknJnZwc3JsZHEJKCR0MywkdDMsOCk7JywKCScmdnBhZGRkCShAWFswXSxAWFswXSwkdDMpOycsCSMgWFswLi4xXSArPSBzaWdtYTEoWFsxNC4uMTVdKQoJICcmdnBzaHVmZAkoJHQzLEBYWzBdLDBiMDEwMTAwMDApJywjIFhbMTYuLjE3XQoJICcmdnBzcmxkCSgkdDIsJHQzLDEwKTsnLAoJICcmdnBzcmxxCSgkdDEsJHQzLDE3KTsnLAoJICcmdnB4b3IJKCR0MiwkdDIsJHQxKTsnLAoJICcmdnBzcmxxCSgkdDMsJHQzLDE5KTsnLAoJICcmdnB4b3IJKCR0MiwkdDIsJHQzKTsnLAkjIHNpZ21hMShYWzE2Li4xN10KCSAnJnZwc2h1ZmQJKCR0MywkdDIsMGIxMTEwMTAwMCk7JywKCScmdnBzbGxkcQkoJHQzLCR0Myw4KTsnLAoJJyZ2cGFkZGQJKEBYWzBdLEBYWzBdLCR0Myk7JwkjIFhbMi4uM10gKz0gc2lnbWExKFhbMTYuLjE3XSkKCSk7Cn0KCmxvY2FsICpyb3IgPSBzdWIgeyAmc2hyZChAX1swXSxAXykgfTsKc3ViIEFWWF8wMF80NyAoKSB7Cm15ICRqID0gc2hpZnQ7Cm15ICRib2R5ID0gc2hpZnQ7Cm15IEBYID0gQF87Cm15IEBpbnNucyA9ICgmJGJvZHksJiRib2R5LCYkYm9keSwmJGJvZHkpOwkjIDEyMCBpbnN0cnVjdGlvbnMKbXkgJGluc247CgoJZm9yZWFjaCAoWHVwZGF0ZV9BVlgoKSkgewkJIyAzMSBpbnN0cnVjdGlvbnMKCSAgICBldmFsOwoJICAgIGV2YWwoc2hpZnQoQGluc25zKSk7CgkgICAgZXZhbChzaGlmdChAaW5zbnMpKTsKCSAgICBldmFsKCRpbnNuID0gc2hpZnQoQGluc25zKSk7CgkgICAgZXZhbChzaGlmdChAaW5zbnMpKSBpZiAoJGluc24gPX4gL3JvcngvICYmIEBpbnNuc1swXSA9fiAvcm9yeC8pOwoJfQoJJnZwYWRkZAkJKCR0MixAWFswXSwmUVdQKDE2KiRqLCRLMjU2KSk7Cglmb3JlYWNoIChAaW5zbnMpIHsgZXZhbDsgfQkJIyByZW1haW5pbmcgaW5zdHJ1Y3Rpb25zCgkmdm1vdmRxYQkoJlFXUCgzMisxNiokaiwiZXNwIiksJHQyKTsKfQoKICAgIGZvciAoJGk9MCwkaj0wOyAkajw0OyAkaisrKSB7CgkmQVZYXzAwXzQ3KCRqLFwmYm9keV8wMF8xNSxAWCk7CglwdXNoKEBYLHNoaWZ0KEBYKSk7CQkjIHJvdGF0ZShAWCkKICAgIH0KCSZjbXAJKCZEV1AoMTYqJGosJEsyNTYpLDB4MDAwMTAyMDMpOwoJJmpuZQkoJmxhYmVsKCJhdnhfMDBfNDciKSk7CgogICAgZm9yICgkaT0wOyAkaTwxNjsgKSB7Cglmb3JlYWNoKGJvZHlfMDBfMTUoKSkgeyBldmFsOyB9CiAgICB9CgoJJm1vdgkoImVzaSIsJkRXUCg5NiwiZXNwIikpOwkjY3R4CgkJCQkJIyZtb3YJKCRBSFswXSwmRFdQKDAsImVzcCIpKTsKCSZ4b3IJKCRBSFsxXSwiZWRpIik7CQkjJm1vdgkoJEFIWzFdLCZEV1AoNCwiZXNwIikpOwoJCQkJCSMmbW92CSgiZWRpIiwgJkRXUCg4LCJlc3AiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDEyLCJlc3AiKSk7CgkmYWRkCSgkQUhbMF0sJkRXUCgwLCJlc2kiKSk7CgkmYWRkCSgkQUhbMV0sJkRXUCg0LCJlc2kiKSk7CgkmYWRkCSgiZWRpIiwmRFdQKDgsImVzaSIpKTsKCSZhZGQJKCJlY3giLCZEV1AoMTIsImVzaSIpKTsKCSZtb3YJKCZEV1AoMCwiZXNpIiksJEFIWzBdKTsKCSZtb3YJKCZEV1AoNCwiZXNpIiksJEFIWzFdKTsKCSZtb3YJKCZEV1AoOCwiZXNpIiksImVkaSIpOwoJJm1vdgkoJkRXUCgxMiwiZXNpIiksImVjeCIpOwoJICMmbW92CSgmRFdQKDAsImVzcCIpLCRBSFswXSk7CgkgJm1vdgkoJkRXUCg0LCJlc3AiKSwkQUhbMV0pOwoJICZ4b3IJKCRBSFsxXSwiZWRpIik7CQkJIyBtYWdpYwoJICZtb3YJKCZEV1AoOCwiZXNwIiksImVkaSIpOwoJICZtb3YJKCZEV1AoMTIsImVzcCIpLCJlY3giKTsKCSMmbW92CSgkRSwmRFdQKDE2LCJlc3AiKSk7CgkmbW92CSgiZWRpIiwmRFdQKDIwLCJlc3AiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDI0LCJlc3AiKSk7CgkmYWRkCSgkRSwmRFdQKDE2LCJlc2kiKSk7CgkmYWRkCSgiZWRpIiwmRFdQKDIwLCJlc2kiKSk7CgkmYWRkCSgiZWN4IiwmRFdQKDI0LCJlc2kiKSk7CgkmbW92CSgmRFdQKDE2LCJlc2kiKSwkRSk7CgkmbW92CSgmRFdQKDIwLCJlc2kiKSwiZWRpIik7CgkgJm1vdgkoJkRXUCgyMCwiZXNwIiksImVkaSIpOwoJJm1vdgkoImVkaSIsJkRXUCgyOCwiZXNwIikpOwoJJm1vdgkoJkRXUCgyNCwiZXNpIiksImVjeCIpOwoJICMmbW92CSgmRFdQKDE2LCJlc3AiKSwkRSk7CgkmYWRkCSgiZWRpIiwmRFdQKDI4LCJlc2kiKSk7CgkgJm1vdgkoJkRXUCgyNCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNpIiksImVkaSIpOwoJICZtb3YJKCZEV1AoMjgsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCJlZGkiLCZEV1AoOTYrNCwiZXNwIikpOwkjIGlucAoKCSZ2bW92ZHFhCSgkdDMsJlFXUCg2NCwkSzI1NikpOwoJJnN1YgkoJEsyNTYsMyo2NCk7CQkJIyByZXdpbmQgSwoJJmNtcAkoImVkaSIsJkRXUCg5Nis4LCJlc3AiKSk7CSMgYXJlIHdlIGRvbmUgeWV0PwoJJmpiCSgmbGFiZWwoImdyYW5kX2F2eCIpKTsKCgkmbW92CSgiZXNwIiwmRFdQKDk2KzEyLCJlc3AiKSk7CSMgcmVzdG9yZSBzcAoJJnZ6ZXJvYWxsCSgpOwomZnVuY3Rpb25fZW5kX0EoKTsKCQkJCQkJaWYgKCRhdng+MSkgewpzdWIgYm9keXhfMDBfMTUgKCkgewkJCSMgKzEwJQoJKAoJJyZyb3J4CSgiZWN4IiwkRSw2KScsCgknJnJvcngJKCJlc2kiLCRFLDExKScsCgkgJyZtb3YJKCZvZmYoJGUpLCRFKScsCQkjIHNhdmUgJEUsIG1vZHVsby1zY2hlZHVsZWQKCScmcm9yeAkoImVkaSIsJEUsMjUpJywKCScmeG9yCSgiZWN4IiwiZXNpIiknLAoJICcmYW5kbgkoImVzaSIsJEUsJm9mZigkZykpJywKCScmeG9yCSgiZWN4IiwiZWRpIiknLAkJIyBTaWdtYTEoZSkKCSAnJmFuZAkoJEUsJm9mZigkZikpJywKCSAnJm1vdgkoJm9mZigkYSksJEFIWzBdKTsnLAkjIHNhdmUgJEEsIG1vZHVsby1zY2hlZHVsZWQKCSAnJm9yCSgkRSwiZXNpIiknLAkJIyBUID0gQ2goZSxmLGcpCgoJJyZyb3J4CSgiZWRpIiwkQUhbMF0sMiknLAoJJyZyb3J4CSgiZXNpIiwkQUhbMF0sMTMpJywKCSAnJmxlYQkoJEUsJkRXUCgwLCRFLCJlY3giKSknLAkjIFQgKz0gU2lnbWExKGUpCgknJnJvcngJKCJlY3giLCRBSFswXSwyMiknLAoJJyZ4b3IJKCJlc2kiLCJlZGkiKScsCgkgJyZtb3YJKCJlZGkiLCZvZmYoJGIpKScsCgknJnhvcgkoImVjeCIsImVzaSIpJywJCSMgU2lnbWEwKGEpCgoJICcmeG9yCSgkQUhbMF0sImVkaSIpJywJIyBhIF49IGIsIChiXmMpIGluIG5leHQgcm91bmQKCSAnJmFkZAkoJEUsJm9mZigkaCkpJywJCSMgVCArPSBoCgkgJyZhbmQJKCRBSFsxXSwkQUhbMF0pJywJIyAoYl5jKSAmPSAoYV5iKQoJICcmYWRkCSgkRSwmRFdQKDMyKzQqKCRpJjE1KSwiZXNwIikpJywJIyBUICs9IEtbaV0rWFtpXQoJICcmeG9yCSgkQUhbMV0sImVkaSIpJywJIyBoID0gTWFqKGEsYixjKSA9IENoKGFeYixjLGIpCgoJICcmYWRkCSgiZWN4IiwkRSknLAkJIyBoICs9IFQKCSAnJmFkZAkoJEUsJm9mZigkZCkpJywJCSMgZCArPSBUCgknJmxlYQkoJEFIWzFdLCZEV1AoMCwkQUhbMV0sImVjeCIpKTsnLgkjIGggKz0gU2lnbWEwKGEpCgoJJ0BBSCA9IHJldmVyc2UoQEFIKTsgJGkrKzsnCSMgcm90YXRlKGEsaCkKCSk7Cn0KCiZzZXRfbGFiZWwoIkFWWF9CTUkiLDMyKTsKCSZsZWEJKCJlc3AiLCZEV1AoLTk2LCJlc3AiKSk7Cgkmdnplcm9hbGwJKCk7CgkjIGNvcHkgY3R4LT5oWzAtN10gdG8gQSxCLEMsRCxFLEYsRyxIIG9uIHN0YWNrCgkmbW92CSgkQUhbMF0sJkRXUCgwLCJlc2kiKSk7CgkmbW92CSgkQUhbMV0sJkRXUCg0LCJlc2kiKSk7CgkmbW92CSgiZWN4IiwmRFdQKDgsImVzaSIpKTsKCSZtb3YJKCJlZGkiLCZEV1AoMTIsImVzaSIpKTsKCSMmbW92CSgmRFdQKDAsImVzcCIpLCRBSFswXSk7CgkmbW92CSgmRFdQKDQsImVzcCIpLCRBSFsxXSk7CgkmeG9yCSgkQUhbMV0sImVjeCIpOwkJCSMgbWFnaWMKCSZtb3YJKCZEV1AoOCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgxMiwiZXNwIiksImVkaSIpOwoJJm1vdgkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJm1vdgkoImVkaSIsJkRXUCgyMCwiZXNpIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyNCwiZXNpIikpOwoJJm1vdgkoImVzaSIsJkRXUCgyOCwiZXNpIikpOwoJIyZtb3YJKCZEV1AoMTYsImVzcCIpLCRFKTsKCSZtb3YJKCZEV1AoMjAsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCJlZGkiLCZEV1AoOTYrNCwiZXNwIikpOwkjIGlucAoJJm1vdgkoJkRXUCgyNCwiZXNwIiksImVjeCIpOwoJJm1vdgkoJkRXUCgyOCwiZXNwIiksImVzaSIpOwoJJnZtb3ZkcWEJKCR0MywmUVdQKDI1NiwkSzI1NikpOwoJJmptcAkoJmxhYmVsKCJncmFuZF9hdnhfYm1pIikpOwoKJnNldF9sYWJlbCgiZ3JhbmRfYXZ4X2JtaSIsMzIpOwoJIyBsb2FkIGlucHV0LCByZXZlcnNlIGJ5dGUgb3JkZXIsIGFkZCBLMjU2WzAuLjE1XSwgc2F2ZSB0byBzdGFjawoJJnZtb3ZkcXUJKEBYWzBdLCZRV1AoMCwiZWRpIikpOwoJJnZtb3ZkcXUJKEBYWzFdLCZRV1AoMTYsImVkaSIpKTsKCSZ2bW92ZHF1CShAWFsyXSwmUVdQKDMyLCJlZGkiKSk7Cgkmdm1vdmRxdQkoQFhbM10sJlFXUCg0OCwiZWRpIikpOwoJJmFkZAkJKCJlZGkiLDY0KTsKCSZ2cHNodWZiCShAWFswXSxAWFswXSwkdDMpOwoJJm1vdgkJKCZEV1AoOTYrNCwiZXNwIiksImVkaSIpOwoJJnZwc2h1ZmIJKEBYWzFdLEBYWzFdLCR0Myk7CgkmdnBzaHVmYgkoQFhbMl0sQFhbMl0sJHQzKTsKCSZ2cGFkZGQJCSgkdDAsQFhbMF0sJlFXUCgwLCRLMjU2KSk7CgkmdnBzaHVmYgkoQFhbM10sQFhbM10sJHQzKTsKCSZ2cGFkZGQJCSgkdDEsQFhbMV0sJlFXUCgxNiwkSzI1NikpOwoJJnZwYWRkZAkJKCR0MixAWFsyXSwmUVdQKDMyLCRLMjU2KSk7CgkmdnBhZGRkCQkoJHQzLEBYWzNdLCZRV1AoNDgsJEsyNTYpKTsKCSZ2bW92ZHFhCSgmUVdQKDMyKzAsImVzcCIpLCR0MCk7Cgkmdm1vdmRxYQkoJlFXUCgzMisxNiwiZXNwIiksJHQxKTsKCSZ2bW92ZHFhCSgmUVdQKDMyKzMyLCJlc3AiKSwkdDIpOwoJJnZtb3ZkcWEJKCZRV1AoMzIrNDgsImVzcCIpLCR0Myk7Cgkmam1wCQkoJmxhYmVsKCJhdnhfYm1pXzAwXzQ3IikpOwoKJnNldF9sYWJlbCgiYXZ4X2JtaV8wMF80NyIsMTYpOwoJJmFkZAkJKCRLMjU2LDY0KTsKCiAgICBmb3IgKCRpPTAsJGo9MDsgJGo8NDsgJGorKykgewoJJkFWWF8wMF80NygkaixcJmJvZHl4XzAwXzE1LEBYKTsKCXB1c2goQFgsc2hpZnQoQFgpKTsJCSMgcm90YXRlKEBYKQogICAgfQoJJmNtcAkoJkRXUCgxNiokaiwkSzI1NiksMHgwMDAxMDIwMyk7Cgkmam5lCSgmbGFiZWwoImF2eF9ibWlfMDBfNDciKSk7CgogICAgZm9yICgkaT0wOyAkaTwxNjsgKSB7Cglmb3JlYWNoKGJvZHl4XzAwXzE1KCkpIHsgZXZhbDsgfQogICAgfQoKCSZtb3YJKCJlc2kiLCZEV1AoOTYsImVzcCIpKTsJI2N0eAoJCQkJCSMmbW92CSgkQUhbMF0sJkRXUCgwLCJlc3AiKSk7CgkmeG9yCSgkQUhbMV0sImVkaSIpOwkJIyZtb3YJKCRBSFsxXSwmRFdQKDQsImVzcCIpKTsKCQkJCQkjJm1vdgkoImVkaSIsICZEV1AoOCwiZXNwIikpOwoJJm1vdgkoImVjeCIsJkRXUCgxMiwiZXNwIikpOwoJJmFkZAkoJEFIWzBdLCZEV1AoMCwiZXNpIikpOwoJJmFkZAkoJEFIWzFdLCZEV1AoNCwiZXNpIikpOwoJJmFkZAkoImVkaSIsJkRXUCg4LCJlc2kiKSk7CgkmYWRkCSgiZWN4IiwmRFdQKDEyLCJlc2kiKSk7CgkmbW92CSgmRFdQKDAsImVzaSIpLCRBSFswXSk7CgkmbW92CSgmRFdQKDQsImVzaSIpLCRBSFsxXSk7CgkmbW92CSgmRFdQKDgsImVzaSIpLCJlZGkiKTsKCSZtb3YJKCZEV1AoMTIsImVzaSIpLCJlY3giKTsKCSAjJm1vdgkoJkRXUCgwLCJlc3AiKSwkQUhbMF0pOwoJICZtb3YJKCZEV1AoNCwiZXNwIiksJEFIWzFdKTsKCSAmeG9yCSgkQUhbMV0sImVkaSIpOwkJCSMgbWFnaWMKCSAmbW92CSgmRFdQKDgsImVzcCIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDEyLCJlc3AiKSwiZWN4Iik7CgkjJm1vdgkoJEUsJkRXUCgxNiwiZXNwIikpOwoJJm1vdgkoImVkaSIsJkRXUCgyMCwiZXNwIikpOwoJJm1vdgkoImVjeCIsJkRXUCgyNCwiZXNwIikpOwoJJmFkZAkoJEUsJkRXUCgxNiwiZXNpIikpOwoJJmFkZAkoImVkaSIsJkRXUCgyMCwiZXNpIikpOwoJJmFkZAkoImVjeCIsJkRXUCgyNCwiZXNpIikpOwoJJm1vdgkoJkRXUCgxNiwiZXNpIiksJEUpOwoJJm1vdgkoJkRXUCgyMCwiZXNpIiksImVkaSIpOwoJICZtb3YJKCZEV1AoMjAsImVzcCIpLCJlZGkiKTsKCSZtb3YJKCJlZGkiLCZEV1AoMjgsImVzcCIpKTsKCSZtb3YJKCZEV1AoMjQsImVzaSIpLCJlY3giKTsKCSAjJm1vdgkoJkRXUCgxNiwiZXNwIiksJEUpOwoJJmFkZAkoImVkaSIsJkRXUCgyOCwiZXNpIikpOwoJICZtb3YJKCZEV1AoMjQsImVzcCIpLCJlY3giKTsKCSZtb3YJKCZEV1AoMjgsImVzaSIpLCJlZGkiKTsKCSAmbW92CSgmRFdQKDI4LCJlc3AiKSwiZWRpIik7CgkmbW92CSgiZWRpIiwmRFdQKDk2KzQsImVzcCIpKTsJIyBpbnAKCgkmdm1vdmRxYQkoJHQzLCZRV1AoNjQsJEsyNTYpKTsKCSZzdWIJKCRLMjU2LDMqNjQpOwkJCSMgcmV3aW5kIEsKCSZjbXAJKCJlZGkiLCZEV1AoOTYrOCwiZXNwIikpOwkjIGFyZSB3ZSBkb25lIHlldD8KCSZqYgkoJmxhYmVsKCJncmFuZF9hdnhfYm1pIikpOwoKCSZtb3YJKCJlc3AiLCZEV1AoOTYrMTIsImVzcCIpKTsJIyByZXN0b3JlIHNwCgkmdnplcm9hbGwJKCk7CiZmdW5jdGlvbl9lbmRfQSgpOwoJCQkJCQl9CgkJCQkJCX0KCQkJCQkJfX19CiZmdW5jdGlvbl9lbmRfQigic2hhMjU2X2Jsb2NrX2RhdGFfb3JkZXIiKTsKCiZhc21fZmluaXNoKCk7Cg==