Benachrichtigungen
Profil
3,1,QW50b25pbw==,28;1,382,1,NHNjaG9vbEBpbmZvPGJyPjxicj5wYWNrYWdlIGluZm87PGJyPmltcG9ydCBqYXZheC5zd2luZy4qOzxicj5pbXBvcnQgamF2YXguaW1hZ2Vpby4qOzxicj48YnI+aW1wb3J0IGphdmEuaW8uKjs8YnI+Ly8gLkZpbGU8YnI+aW1wb3J0IGphdmEudXRpbC4qOzxicj4vLyBIYXNoTWFwLCBBcnJheUxpc3Q8YnI+aW1wb3J0IGphdmEuYXd0LkFXVEV4Y2VwdGlvbjs8YnI+aW1wb3J0IGphdmEuYXd0LkRlc2t0b3A7PGJyPmltcG9ydCBqYXZhLmF3dC5HcmFwaGljczs8YnI+aW1wb3J0IGphdmEuYXd0LlRvb2xraXQ7PGJyPmltcG9ydCBqYXZhLmF3dC5Sb2JvdDs8YnI+aW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTs8YnI+aW1wb3J0IGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2U7PGJyPmltcG9ydCBqYXZhLmF3dC5ldmVudC4qOzxicj5wdWJsaWMgY2xhc3MgTWFpbiB7PGJyPsKgIMKgIHN0YXRpYyBKRnJhbWUgZnJhbWU7PGJyPsKgIMKgIHN0YXRpYyBKTGFiZWwgYnVmZmVyTGFiZWw7PGJyPsKgIMKgIHN0YXRpYyBCdWZmZXJlZEltYWdlIGJ1ZmZlciwgYmFja2dyb3VuZDs8YnI+wqAgwqAgc3RhdGljIFJhbmRvbSB6dWZhbGw7PGJyPsKgIMKgwqA8YnI+CUBTdXBwcmVzc1dhcm5pbmdzKCZxdW90O3VuY2hlY2tlZCZxdW90OykvLyBhbmRlcnMgbmljaHQgbcO2Z2xpY2gsIGF1w59lciBwZXIgTGlzdC4uLjxicj4Jc3RhdGljIEFycmF5TGlzdCZsdDtSb2hHZWJhZXVkZSZndDtbXSBiYXVtZW51ZSA9IG5ldyBBcnJheUxpc3RbXXtuZXcgQXJyYXlMaXN0Jmx0OyZndDsoKSwgbmV3IEFycmF5TGlzdCZsdDsmZ3Q7KCksIG5ldyBBcnJheUxpc3QmbHQ7Jmd0OygpLCBuZXcgQXJyYXlMaXN0Jmx0OyZndDsoKSwgbmV3IEFycmF5TGlzdCZsdDsmZ3Q7KCl9Ozxicj4JPGJyPsKgIMKgIHN0YXRpYyBKQnV0dG9uIGJhdUhhdXMsIGJhdUluZHVzdHJpZTs8YnI+wqAgwqAgc3RhdGljIGludCB3aWR0aD0xNjAwLCBoZWlnaHQ9OTAwLCBtYXBTaXplWD0xMDAsIG1hcFNpemVZPTEwMCwgZGVsdGFYPTAsIGRlbHRhWT0wLCBtb3VzZVgsIG1vdXNlWTs8YnI+wqAgwqAgc3RhdGljIGludCBiYXVtZW51ZVc9MTAwMCwgYmF1bWVudWVIPTMwMCwgaGVhZGVyVz0xMDAwLCBoZWFkZXJIPTE3MCwgYWt0aXZUYWI9LTEsIGFrdGl2QmF1WCwgYWt0aXZCYXVZLCBha3RpdkJhdVcsIGFrdGl2QmF1SDs8YnI+wqAgwqAgc3RhdGljIEdlYmFldWRlW11bXSBtYXAgPSBuZXcgR2ViYWV1ZGVbbWFwU2l6ZVhdW21hcFNpemVZXTs8YnI+wqAgwqAgc3RhdGljIFJvaEdlYmFldWRlIHdhbGQsIHNvbGxCYXVlbiA9IG51bGw7PGJyPsKgIMKgIHN0YXRpYyBib29sZWFuIHNvbGxaZXJzdG9lcmVuID0gZmFsc2U7PGJyPsKgIMKgwqA8YnI+wqAgwqAgc3RhdGljIGZpbmFsIGludCBSR0I9MSwgQVJHQj0yOzxicj7CoCDCoCBzdGF0aWMgQnVmZmVyZWRJbWFnZVtdIGEoQnVmZmVyZWRJbWFnZS4uLiBhcnJheSl7Ly8gbnVyIG5lIEZvcm1zYWNoZSAtIG1hY2h0IFBsYXR6IC0mZ3Q7IMO8YmVyc2ljaHRsaWNoZXI8YnI+wqAgwqAgwqAgwqAgcmV0dXJuIGFycmF5Ozxicj7CoCDCoCB9PGJyPsKgIMKgIHN0YXRpYyBCZWR1ZXJmbmlzW10gYShCZWR1ZXJmbmlzLi4uIGFycmF5KXsvLyBudXIgbmUgRm9ybXNhY2hlIC0gbWFjaHQgUGxhdHogLSZndDsgw7xiZXJzaWNodGxpY2hlcjxicj7CoCDCoCDCoCDCoCByZXR1cm4gYXJyYXk7PGJyPsKgIMKgIH08YnI+wqAgwqAgc3RhdGljIEJlZHVlcmZuaXNbXSBhMCgpezxicj7CoCDCoCDCoCDCoCByZXR1cm4gbmV3IEJlZHVlcmZuaXNbMF07PGJyPsKgIMKgIH08YnI+wqAgwqAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7PGJyPjxicj7CoCDCoCDCoCDCoCBiYXVBbmdlYm90LnNldFJHQigwLDAsMCk7PGJyPsKgIMKgIMKgIMKgIC8vIGVyc3RlbGxlIGFsbGUgR2ViYWV1ZGV0eXBlbi4uLjxicj7CoCDCoCDCoCDCoCAvL1N0cmluZyBuYW1lLCBpbnQgdHlwLCBpbnQgdywgaW50IGgsIEJlZHVlcmZuaXNbXSBiZWR1ZXJmbmlzc2UsIEJ1ZmZlcmVkSW1hZ2VbXSBpbWdzPGJyPsKgIMKgIMKgIMKgIGJhdW1lbnVlWzBdLmFkZChuZXcgUm9oR2ViYWV1ZGUoJnF1b3Q7U2VlJnF1b3Q7LCAwLCAxLCAxLCBhMCgpLCBhKGxvYWQoJnF1b3Q7V2Fzc2VyLnBuZyZxdW90OykpKSk7PGJyPsKgIMKgIMKgIMKgIGJhdW1lbnVlWzBdLmFkZCh3YWxkPW5ldyBSb2hHZWJhZXVkZSgmcXVvdDtXYWxkJnF1b3Q7LCAwLCAxLCAxLCBhMCgpLCBhKGxvYWQoJnF1b3Q7V2FsZC5wbmcmcXVvdDspKSkpOzxicj7CoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIHp1ZmFsbCA9IG5ldyBSYW5kb20oU3lzdGVtLm5hbm9UaW1lKCkmYW1wOzB4ZmZmZmZmZmYpOzxicj7CoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIFJlc3NvdXJjZW5LYXJ0ZSBzZWVuID0gbmV3IFJlc3NvdXJjZW5LYXJ0ZShTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSk7PGJyPsKgIMKgIMKgIMKgIGZvcihpbnQgaT0wO2kmbHQ7bWFwU2l6ZVg7aSsrKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgZm9yKGludCBqPTA7aiZsdDttYXBTaXplWTtqKyspezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZihzZWVuLmdldChpLGopJmx0OzAuMyl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1hcFtpXVtqXT1uZXcgR2ViYWV1ZGUoaSxqLHNvbGxCYXVlbik7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgbnVsbEltYWdlID0gbG9hZCgmcXVvdDt6ZXJvLnBuZyZxdW90Oyk7PGJyPsKgIMKgIMKgIMKgIGJ1ZmZlciA9IG5ldyBCdWZmZXJlZEltYWdlKHdpZHRoLGhlaWdodCxBUkdCKTsvLyBlcnN0bWFsIG5pY2h0czxicj7CoCDCoCDCoCDCoCBiYWNrZ3JvdW5kID0gbmV3IEJ1ZmZlcmVkSW1hZ2UoMSwxLFJHQik7PGJyPsKgIMKgIMKgIMKgIGJhY2tncm91bmQuc2V0UkdCKDAsMCwweGZmMDA5MDAwKTsvLyBHcsO8biBkZXMgSGludGVyZ3J1bmRzPGJyPsKgIMKgIMKgIMKgIGZyYW1lID0gbmV3IEpGcmFtZSgmcXVvdDtTdGFkdHNpbWx1YXRpb24mcXVvdDspOzxicj7CoCDCoCDCoCDCoCBmcmFtZS5zZXRDb250ZW50UGFuZShidWZmZXJMYWJlbCA9IG5ldyBKTGFiZWwoKSk7PGJyPsKgIMKgIMKgIMKgIGZyYW1lLmFkZE1vdXNlTW90aW9uTGlzdGVuZXIobmV3IE1vdXNlTW90aW9uTGlzdGVuZXIoKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqDCoDxicj7CoCDCoCDCoCDCoCDCoCDCoEBPdmVycmlkZSBwdWJsaWMgdm9pZCBtb3VzZURyYWdnZWQoTW91c2VFdmVudCBlKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IGRlbFg9bW91c2VYLShtb3VzZVg9ZS5nZXRYKCkpLCBkZWxZPW1vdXNlWS0obW91c2VZPWUuZ2V0WSgpKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVsdGFYLT1kZWxYOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZWx0YVktPWRlbFk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlcGFpbnQoZmFsc2UpOzxicj7CoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgwqAgwqBAT3ZlcnJpZGUgcHVibGljIHZvaWQgbW91c2VNb3ZlZChNb3VzZUV2ZW50IGUpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtb3VzZVg9ZS5nZXRYKCk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1vdXNlWT1lLmdldFkoKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIH0pOzxicj7CoCDCoCDCoCDCoCBmcmFtZS5hZGRNb3VzZUxpc3RlbmVyKG5ldyBNb3VzZUxpc3RlbmVyKCl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIG1vdXNlQ2xpY2tlZChNb3VzZUV2ZW50IGUpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyByZWFnaWVyZSBhdWYgZGFzIEtsaWNrZW4gZsO8cnMgQmF1ZW48YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IGN4PWUuZ2V0WCgpLCBjeT1lLmdldFkoKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3dpdGNoKGUuZ2V0QnV0dG9uKCkpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIE1vdXNlRXZlbnQuQlVUVE9OMTovL2w8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYoY3kmbHQ7aGVhZGVySCAmYW1wOyZhbXA7IGN4Jmx0O2hlYWRlclcpey8vIEhlYWRlciwgbWFjaHQgZWlnZW50bGljaCBuaWNodHMsIHZsbHQgRXh0cmFzdGF0aXN0aWtlbjxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzeXNvdXQoJnF1b3Q7Y2xpY2sgYXVmIGRlbiBIZWFkZXImcXVvdDspOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2UgaWYoY3kmbHQ7d2lkdGgtYmF1bWVudWVIIHx8IGN4Jmd0Oz1iYXVtZW51ZVcpey8vIFNwaWVsZmVsZDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZihha3RpdlRhYiZndDs9MCAmYW1wOyZhbXA7IGN4Jmd0Oz1ha3RpdkJhdVggJmFtcDsmYW1wOyBjeSZndDs9YWt0aXZCYXVZICZhbXA7JmFtcDsgY3gmbHQ7YWt0aXZCYXVYK2FrdGl2QmF1VyAmYW1wOyZhbXA7IGN5Jmx0O2FrdGl2QmF1WStha3RpdkJhdUgpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyBtYW4gbcO2Y2h0ZSB3YXMgYmF1ZW4gOik8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYoc29sbEJhdWVuIT1udWxsKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IG14PShpbnQpTWF0aC5yb3VuZChhKGN4LCBjeSkpLCBteT0oaW50KU1hdGgucm91bmQoYihjeCwgY3kpKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYobXgmZ3Q7PTAgJmFtcDsmYW1wOyBteSZndDs9MCAmYW1wOyZhbXA7IG14Jmx0O21hcFNpemVYICZhbXA7JmFtcDsgbXkmbHQ7bWFwU2l6ZVkpey8vIG1hbiBtw7ZjaHRlIGF1ZiBkZW0gU3BpZWxwbGFuIGJhdWVuPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKG1hcFtteF1bbXldPT1udWxsKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYoR2ViYWV1ZGUuYmF1ZShteCwgbXksIHNvbGxCYXVlbikpey8vIEdlbGQgZXRjIHd1cmRlIHNjaG9uIGFiZ2Vob2Jlbjxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtYXBbbXhdW215XT1uZXcgR2ViYWV1ZGUobXgsIG15LCBzb2xsQmF1ZW4pOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSBzeXNvdXQoJnF1b3Q7QmF1ZW4gaGllciBuaWNodCBtw7ZnbGljaCEmcXVvdDspOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Ugc3lzb3V0KCZxdW90O0R1IGthbm5zdCBhdcOfZXJoYWxiIGRlcyBGZWxkZXMgbmljaHQgYmF1ZW4hJnF1b3Q7KTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIGlmKHNvbGxaZXJzdG9lcmVuKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8gTMO2c2NoZSBkYXMgSGF1cy4uLjxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyBhbHNvIHRyYWdlIEJld29obmVyIGF1cyB1bmQgZXZlbnR1ZWxsIGRlc3Ryb3kuLi48YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IG14PShpbnQpTWF0aC5yb3VuZChhKGN4LCBjeSkpLCBteT0oaW50KU1hdGgucm91bmQoYihjeCwgY3kpKTsvLyBvamUuLi4gem9vbSBub2NoIGVpbmJpbmRlbiE8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYobXgmZ3Q7PTAgJmFtcDsmYW1wOyBteSZndDs9MCAmYW1wOyZhbXA7IG14Jmx0O21hcFNpemVYICZhbXA7JmFtcDsgbXkmbHQ7bWFwU2l6ZVkpey8vIGVzIHd1cmRlIGF1ZiBldHdhcyBnZWtsaWNrdCwgZGFzIG51biBnZWzDtnNjaHQgd2VyZGVuIHNvbGw8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgR2ViYWV1ZGUgZyA9IG1hcFtteF1bbXldOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZihnIT1udWxsKXsvLyBkYXMgR2ViYWV1ZGUgenVtIEzDtnNjaGVuIGlzdCBhdWNoIHZvcmhhbmRlbjxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnLnZlcmxhc3NlKCk7Ly8gdHJhZ2UgQmV3b2huZXIgLyBBbmdlc3RlbGx0ZSBhdXMgKCsgZ2liIGRpZSBIw6RsZnRlIGRlciBSZXNvdXJjZW4gZGVtIFNwaWVsZXIgd2llZGVyKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtYXBbbXhdW215XT1udWxsOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXBhaW50KHRydWUpOy8vIHplaWdlIGRpZSBWZXLDpG5kZXJ1bmcgLSZndDsgc3DDpHRlciBldmVudHVlbGwgYXVjaCBtYWwgbWl0IEFicmlzc3BhcnRpa2VsbiAtJmd0OyBqZSBuYWNoIFplaXQ8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHN5c291dCgmcXVvdDtOaWNodCB6dSB6ZXJzdMO2cmVuISZxdW90Oyk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSBzeXNvdXQoJnF1b3Q7QXXDn2VyaGFsYiBkZXMgRmVsZGVzIGthbm4gbmljaHRzIHplcnN0w7ZydCB3ZXJkZW4hJnF1b3Q7KTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Ugezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHsvL0JhdW1lbsO8PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIG9kZXIgYXVmZ2VrbGFwcHQuLi4gd2llIG1hY2hlbiB3aXIgZGFzIGVpZ2VudGxpY2g/PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWt0aXZUYWIgPSBjeCo2L2JhdW1lbnVlVzsvLzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZihha3RpdlRhYj09NSl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNvbGxaZXJzdG9lcmVuID0gdHJ1ZTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc29sbFplcnN0b2VyZW4gPSBmYWxzZTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIHJlcGFpbnQgQmF1bWVuw7xlIGltIEJsaWNrZmVsZDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZihzb2xsWmVyc3RvZXJlbil7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJhdUFuZ2Vib3QgPSBuZXcgQnVmZmVyZWRJbWFnZSgxLCAxLCBBUkdCKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYmF1QW5nZWJvdC5zZXRSR0IoMCwwLDApOy8vIHVuc2ljaHRiYXIgdW5kIHNjaHdhcno8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYmF1QW5nZWJvdCA9IG5ldyBCdWZmZXJlZEltYWdlKGJhdW1lbnVlVywgYmF1bWVudWVILCBBUkdCKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgR3JhcGhpY3MgZyA9IGJhdUFuZ2Vib3QuZ2V0R3JhcGhpY3MoKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8gYW5nZW5vbW1lbiBlcyBnaWJ0IG51ciBzb3ZpZWxlIE9iamVrdGUsIGRhc3MgZGllIGFsbGUgYXVmIGRlbSBTY2hpcm0gw7xiZXJlaW5hbmRlciBwYXNzZW48YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZm9yKGludCBpPTA7aSZsdDtiYXVtZW51ZVtha3RpdlRhYl0uc2l6ZSgpO2krKyl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIHN0ZWxsZSBkYXMgSGF1cyBzY2jDtm4gZGFyLi4uIGJlaSDDvGJlcmdyb8OfZW4gZXZlbnR1ZWxsIGVpbiBQcm9ibGVtLCBzb2xhbmdlIG51ciAxeDEgRmVsZGVyIGJlbGVndCB3ZXJkZW4gYWJlciBrZWluZXMuLi48YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqDCoDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGcuZGlzcG9zZSgpOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBNb3VzZUV2ZW50LkJVVFRPTjI6Ly9tPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIG5pY2h0cy4uLjxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBNb3VzZUV2ZW50LkJVVFRPTjM6Ly9yPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIGdpYiBJbmZvcyDDvGJlciBkYXMgc29sbEdlYsOkdWRlLCBkZW4gVHlwKFJvaEdlYmFldWRlKSBvZGVyIGRhcyBha3RpdmUgR2ViYWV1ZGU8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgCTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqDCoDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIMKgIMKgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIG1vdXNlRW50ZXJlZChNb3VzZUV2ZW50IGUpe308YnI+wqAgwqAgwqAgwqAgwqAgwqBAT3ZlcnJpZGUgcHVibGljIHZvaWQgbW91c2VFeGl0ZWQoTW91c2VFdmVudCBlKXt9PGJyPsKgIMKgIMKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgwqAgwqBAT3ZlcnJpZGUgcHVibGljIHZvaWQgbW91c2VQcmVzc2VkKE1vdXNlRXZlbnQgZSl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIMKgIMKgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqDCoDxicj7CoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIH0pOzxicj7CoCDCoCDCoCDCoCBmcmFtZS5hZGRNb3VzZVdoZWVsTGlzdGVuZXIobmV3IE1vdXNlV2hlZWxMaXN0ZW5lcigpezxicj7CoCDCoCDCoCDCoCDCoCDCoEBPdmVycmlkZSBwdWJsaWMgdm9pZCBtb3VzZVdoZWVsTW92ZWQoTW91c2VXaGVlbEV2ZW50IGUpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB6b29tLz1NYXRoLnBvdygxLjEsIGUuZ2V0V2hlZWxSb3RhdGlvbigpKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYoem9vbSZsdDttaW5ab29tKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgem9vbSA9IG1pblpvb207PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSBpZih6b29tJmd0O21heFpvb20pezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB6b29tID0gbWF4Wm9vbTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXBhaW50KGZhbHNlKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCB9KTs8YnI+wqAgwqAgwqAgwqAgZnJhbWUuYWRkS2V5TGlzdGVuZXIobmV3IEtleUxpc3RlbmVyKCl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIGtleVByZXNzZWQoS2V5RXZlbnQgZSl7fTxicj7CoCDCoCDCoCDCoCDCoCDCoEBPdmVycmlkZSBwdWJsaWMgdm9pZCBrZXlSZWxlYXNlZChLZXlFdmVudCBlKXt9PGJyPsKgIMKgIMKgIMKgIMKgIMKgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIGtleVR5cGVkKEtleUV2ZW50IGUpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzd2l0Y2goZS5nZXRLZXlDaGFyKCkpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlICYjMzk7MSYjMzk7Ojxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB6b29tKj0xLjE7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKHpvb20mZ3Q7bWF4Wm9vbSl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHpvb20gPSBtYXhab29tOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlcGFpbnQoZmFsc2UpOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSAmIzM5OzImIzM5Ozo8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgem9vbS89MS4xOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZih6b29tJmx0O21pblpvb20pezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB6b29tID0gbWluWm9vbTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXBhaW50KGZhbHNlKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCB9KTs8YnI+wqAgwqAgwqAgwqDCoDxicj7CoCDCoCDCoCDCoCBmcmFtZS5zZXRCb3VuZHMoMCwwLHdpZHRoLGhlaWdodCk7PGJyPsKgIMKgIMKgIMKgIGZyYW1lLnNldERlZmF1bHRDbG9zZU9wZXJhdGlvbihKRnJhbWUuRVhJVF9PTl9DTE9TRSk7PGJyPsKgIMKgIMKgIMKgIGZyYW1lLnNldFZpc2libGUodHJ1ZSk7PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgcmVwYWludCh0cnVlKTs8YnI+wqAgwqAgwqAgwqDCoDxicj7CoCDCoCDCoCDCoCB3aGlsZSh0cnVlKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgVGhyZWFkLnNsZWVwKDMwMCk7Ly8zIEZQUzxicj7CoCDCoCDCoCDCoCDCoCDCoCB0aWNrKCk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIC8vIG1hbGUgb25FdmVudDxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIH08YnI+wqAgwqAgcHVibGljIHN0YXRpYyBCdWZmZXJlZEltYWdlIG51bGxJbWFnZTs8YnI+wqAgwqAgcHVibGljIHN0YXRpYyBkb3VibGUgem9vbT00LCBtaW5ab29tPTAuMjUsIG1heFpvb209MTA7PGJyPsKgIMKgIHB1YmxpYyBzdGF0aWMgaW50IGRlbHRhTWFwWD0xMjAwLCBkZWx0YU1hcFk9MTIwMDs8YnI+wqAgwqAgcHVibGljIHN0YXRpYyBCdWZmZXJlZEltYWdlIGFsbCwgYmF1QW5nZWJvdCA9IG5ldyBCdWZmZXJlZEltYWdlKDEsMSxBUkdCKTs8YnI+wqAgwqDCoDxicj7CoCDCoCBwdWJsaWMgc3RhdGljIHZvaWQgcmVwYWludChib29sZWFuIGFsbEQpezxicj7CoCDCoCDCoCDCoCAvLyBtYWxlIGRlbiBCaWxkc2NoaXJtIG5ldS4uLiAvL3RoZW9yZXRpc2NoIHNvbGx0ZW4gd2lyIHdvaGwgZWluZmFjaCBkaWUgZ2FuemUgS2FydGUgMXggcmVuZGVybiBsYXNzZW4uLi48YnI+wqAgwqAgwqAgwqAgR3JhcGhpY3MgZzs8YnI+wqAgwqAgwqAgwqAgaWYoYWxsRCl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIGFsbCA9IG5ldyBCdWZmZXJlZEltYWdlKG1hcFNpemVYKjUwLCBtYXBTaXplWSo1MCxBUkdCKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgZyA9IGFsbC5nZXRHcmFwaGljcygpOzxicj7CoCDCoCDCoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIMKgIMKgIGZvcihpbnQgaT0wO2kmbHQ7bWFwU2l6ZVg7aSsrKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZm9yKGludCBqPTA7aiZsdDttYXBTaXplWTtqKyspezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBHZWJhZXVkZSBiOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnQgeD0oaW50KXgoaSxqKSwgeT0oaW50KXkoaSxqKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYoKGI9bWFwW2ldW2pdKSE9bnVsbCAmYW1wOyZhbXA7IGIudHlwIT1udWxsKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8gd2VubiBkYXMgQmlsZCBhdWYgdW5zZXJlbSBCaWxkIHp1IG1hbGVuIGlzdCwgbWFsZSBkYXMuLi48YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQnVmZmVyZWRJbWFnZSBpY29uID0gYi5nZXRJY29uKCk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGcuZHJhd0ltYWdlKGljb24sPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh4LWljb24uZ2V0V2lkdGgoKS8yKStkZWx0YU1hcFgsPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh5LWljb24uZ2V0SGVpZ2h0KCkvMikrZGVsdGFNYXBZLCBpY29uLmdldFdpZHRoKCksIGljb24uZ2V0SGVpZ2h0KCksIG51bGwpOy8vIG1hbGUgZGFzIEJpbGQ6IHZvbiBkZXIgTWl0dGUgYmlzPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGcuZHJhd0ltYWdlKG51bGxJbWFnZSw8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHgtbnVsbEltYWdlLmdldFdpZHRoKCkvMikrZGVsdGFNYXBYLDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAoeS1udWxsSW1hZ2UuZ2V0SGVpZ2h0KCkvMikrZGVsdGFNYXBZLCBudWxsSW1hZ2UuZ2V0V2lkdGgoKSwgbnVsbEltYWdlLmdldEhlaWdodCgpLCBudWxsKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgZy5kaXNwb3NlKCk7PGJyPsKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqDCoDxicj7CoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgZyA9IGJ1ZmZlci5nZXRHcmFwaGljcygpOzxicj7CoCDCoCDCoCDCoCBnLmRyYXdJbWFnZShiYWNrZ3JvdW5kLDAsMCx3aWR0aCxoZWlnaHQsbnVsbCk7PGJyPsKgIMKgIMKgIMKgIGcuZHJhd0ltYWdlKGFsbCwoaW50KShkZWx0YVgtZGVsdGFNYXBYKnpvb20pK3dpZHRoLzIsKGludCkoZGVsdGFZLWRlbHRhTWFwWSp6b29tKStoZWlnaHQvMiwoaW50KShhbGwuZ2V0V2lkdGgoKSp6b29tKSwoaW50KShhbGwuZ2V0SGVpZ2h0KCkqem9vbSksbnVsbCk7PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgLy8gemVpY2huZSBkYXMgQmF1bWVuw7wuLi48YnI+wqAgwqAgwqAgwqDCoDxicj7CoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIGcuZGlzcG9zZSgpOzxicj7CoCDCoCDCoCDCoCBidWZmZXJMYWJlbC5zZXRJY29uKG5ldyBJbWFnZUljb24oYnVmZmVyKSk7PGJyPsKgIMKgIH08YnI+wqAgwqDCoDxicj7CoCDCoCBwdWJsaWMgc3RhdGljIEhhc2hNYXAmbHQ7U3RyaW5nLCBCdWZmZXJlZEltYWdlJmd0OyBsb2FkZWQgPSBuZXcgSGFzaE1hcCZsdDsmZ3Q7KCk7PGJyPsKgIMKgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGltYWdlU3RhbmRhcnRVUkw9JnF1b3Q7Z2Z4LyZxdW90Ozs8YnI+wqAgwqAgcHVibGljIHN0YXRpYyBCdWZmZXJlZEltYWdlIGxvYWQoU3RyaW5nIG5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7PGJyPsKgIMKgIMKgIMKgIEJ1ZmZlcmVkSW1hZ2UgaW1nID0gbG9hZGVkLmdldChuYW1lKTs8YnI+wqAgwqAgwqAgwqAgaWYoaW1nIT1udWxsKXJldHVybiBpbWc7PGJyPsKgIMKgIMKgIMKgIHJldHVybiBJbWFnZUlPLnJlYWQobmV3IEZpbGUoaW1hZ2VTdGFuZGFydFVSTCtuYW1lKSk7PGJyPsKgIMKgIH08YnI+wqAgwqDCoDxicj7CoCDCoCAvLyBVbXdhbmRsdW5nIGRlciBQb3NpdGlvbmVuIGluZWluYW5kZXIgKGZ1ZXIgTWFsZXZlbnRzIHVuZCBNYXVza2xpY2tzIGF1ZiB1bnNlciBMYWJlbCk8YnI+wqAgwqAgLy8gMjYuMDIuQWJnYWJlIDokLCBEb2t1bWVudGF0aW9uICZhbXA7IFZvcnN0ZWxsdW5nIDEwbWluIG5pY2h0IHZlcmdlc3Nlbjxicj7CoCDCoCBwdWJsaWMgc3RhdGljIGRvdWJsZSB4NXNxMTA2ID0gMC40ODU2NDI5MzExNzg2MzIwOTAzNjc4MDA0NDY0MjQ0MSwgeDlzcTEwNiA9IDAuODc0MTU3Mjc2MTIxNTM3NzYyNjYyMDQwODAzNTYzOTQ7PGJyPsKgIMKgIC8vIE1hcENPTyBieSBCaWxkQ09PPGJyPsKgIMKgIHB1YmxpYyBzdGF0aWMgZG91YmxlIGEoZG91YmxlIHgsIGRvdWJsZSB5KXtyZXR1cm4geDlzcTEwNiooeCkreDVzcTEwNiooeSk7fTxicj7CoCDCoCBwdWJsaWMgc3RhdGljIGRvdWJsZSBiKGRvdWJsZSB4LCBkb3VibGUgeSl7cmV0dXJuIC14NXNxMTA2Kih4KSt4OXNxMTA2Kih5KTt9PGJyPsKgIMKgIC8vIEJpbGRDT08gYnkgTWFwQ09PPGJyPsKgIMKgIHB1YmxpYyBzdGF0aWMgZG91YmxlIHgoZG91YmxlIGEsIGRvdWJsZSBiKXtyZXR1cm4gOSphLTUqYjt9PGJyPsKgIMKgIHB1YmxpYyBzdGF0aWMgZG91YmxlIHkoZG91YmxlIGEsIGRvdWJsZSBiKXtyZXR1cm4gNSphKzkqYjt9PGJyPsKgIMKgIHB1YmxpYyBzdGF0aWMgdm9pZCBzeXNvdXQoT2JqZWN0IG8pezxicj7CoCDCoCDCoCDCoCBTeXN0ZW0ub3V0LnByaW50bG4obyk7PGJyPsKgIMKgIH08YnI+wqAgwqAgcHVibGljIHN0YXRpYyB2b2lkIHRpY2soKXs8YnI+wqAgwqAgwqAgwqAgZm9yKGludCBpPTA7aSZsdDttYXBTaXplWDtpKyspezxicj7CoCDCoCDCoCDCoCDCoCDCoCBmb3IoaW50IGo9MDtqJmx0O21hcFNpemVZO2orKyl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIEdlYmFldWRlIGdlYiA9IG1hcFtpXVtqXTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYoZ2ViIT1udWxsKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgCWlmKGdlYi50eXAhPW51bGwpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZihnZWIudGljaygpKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ2ViLnZlcmxhc3NlKCk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1hcFtpXVtqXT1udWxsOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIGlmKHp1ZmFsbC5uZXh0KCkqMTAwMDAmZ3Q7MSl7Ly8gWnVyw7xja2Vyb2JlcnVuZyBkdXJjaCBkaWUgTmF0dXIgOik8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgCW1hcFtpXVtqXSA9IG5ldyBHZWJhZXVkZShpLGosd2FsZCk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIH08YnI+wqAgwqAgcHVibGljIHN0YXRpYyBpbnQgbXVsdGkxID0gMjU2LCBtdWx0aTI9bXVsdGkxLTE7PGJyPsKgIMKgIHB1YmxpYyBzdGF0aWMgR2ViYWV1ZGUgbGVlciA9IG5ldyBHZWJhZXVkZSgtMSwtMSxudWxsKTs8YnI+wqAgwqAgcHVibGljIHN0YXRpYyBkb3VibGUgZXhwZWN0ZWRTY29yZShkb3VibGUgY2hhbmNlKXs8YnI+wqAgwqAgCWRvdWJsZSBnZXMgPSAxLCBmYWN0b3JIYWxiZSA9IE1hdGgucG93KCgoZG91YmxlKW11bHRpMikvbXVsdGkxLCBjaGFuY2UqMC41KSwgZmFjdG9yPWZhY3RvckhhbGJlKmZhY3RvckhhbGJlOzxicj7CoCDCoCAJZm9yKGludCBpPTA7aSZsdDsxMDtpKyspey8vIDEwIFp5a2xlbi4uLiAtJmd0OyBkYXMgbMOkdWZ0IGF1ZiBlaW5lIFphaGwgenUsIDEwIER1cmNobMOkdWZlIHJlaWNoZW4gbG9ja2VyIHVtIHNpY2ggZGVtIGFuenVuw6RoZXJuPGJyPsKgIMKgIAkJZ2VzID0gZ2VzKmZhY3RvcisxOy8vIFplaXQgOik8YnI+wqAgwqAgCX08YnI+wqAgwqAgCXJldHVybiBnZXMqZmFjdG9ySGFsYmU7PGJyPsKgIMKgIH08YnI+wqAgwqAgcHVibGljIHN0YXRpYyBjbGFzcyBHZWJhZXVkZSB7PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgcHVibGljIHN0YXRpYyBib29sZWFuIGJhdWUoaW50IHgsIGludCB5LCBSb2hHZWJhZXVkZSB0eXApezxicj7CoCDCoCDCoCDCoCDCoCDCoCAvLyB0ZXN0ZSBvYiBnZW51ZyBHZWxkIGV0YyBkYSBpc3QuLi48YnI+wqAgwqAgwqAgwqAgwqAgwqAgLy8gYmVpIGdyw7bDn3JlcmVuIEdydW5kc3TDvGNrZW4gdmxsdCBhdWNoIG1laHJlcmUgRmVsZGVyIMO8YmVycHLDvGZlbi4uLjxicj7CoCDCoCDCoCDCoCDCoCDCoCBmb3IoaW50IGk9MDtpJmx0O3R5cC53O2krKyl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAlpZih4K2kmZ3Q7PW1hcFNpemVYKSByZXR1cm4gZmFsc2U7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAlmb3IoaW50IGo9MDtqJmx0O3R5cC5oO2orKyl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJaWYoeStqJmd0Oz1tYXBTaXplWSkgcmV0dXJuIGZhbHNlOzxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCWlmKG1hcFt4K2ldW3kral0hPW51bGwpIHJldHVybiBmYWxzZTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCX08YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gdHJ1ZTsvLyBlcmZvbGdyZWljaDxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgcHVibGljIFJvaEdlYmFldWRlIHR5cDs8YnI+wqAgwqAgwqAgwqAgcHVibGljIGludCB4LCB5LCBzY29yZSwgbWF4c2NvcmUsIHBybzI1NiwgaWQsIHByb2JsZW1JbmRleDs8YnI+wqAgwqAgwqAgwqAgcHVibGljIE1lbnNjaFtdIG51dHplcjs8YnI+wqAgwqAgwqAgwqAgcHVibGljIFN0cmluZ1tdIHByb2JsZW1zID0gbmV3IFN0cmluZ1tdeyZxdW90OyZxdW90OywmcXVvdDsmcXVvdDssJnF1b3Q7JnF1b3Q7LCZxdW90OyZxdW90OywmcXVvdDsmcXVvdDssJnF1b3Q7JnF1b3Q7LCZxdW90OyZxdW90OywmcXVvdDsmcXVvdDt9Ozxicj7CoCDCoCDCoCDCoCAvKio8YnI+wqAgwqAgwqAgwqAgSURzOjxicj7CoCDCoCDCoCDCoCBUeXA8YnI+wqAgwqAgwqAgwqAgMD1EZWtvPGJyPsKgIMKgIMKgIMKgIDE9PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgTnVtbWVyIDAtdW5lbmRsLjxicj7CoCDCoCDCoCDCoCAqLzxicj7CoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIHB1YmxpYyBHZWJhZXVkZShpbnQgeCwgaW50IHksIFJvaEdlYmFldWRlIHR5cCl7PGJyPsKgIMKgIMKgIMKgIAlpZih0eXA9PW51bGwpIHJldHVybjs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgdGhpcy54PXg7dGhpcy55PXk7dGhpcy50eXA9dHlwOzxicj7CoCDCoCDCoCDCoCDCoCDCoCBudXR6ZXIgPSBuZXcgTWVuc2NoW3R5cC5udXR6ZXJdOzxicj7CoCDCoCDCoCDCoCDCoCDCoCBmb3IoQmVkdWVyZm5pcyBiOnR5cC5iZWR1ZXJmbmlzc2Upezxicj7CoCDCoCDCoCDCoCDCoCDCoCAJPGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkvLyBmw7xsbGUgZXZlbnR1ZWxsIHNjaG9ubWFsIGRlaW5lIEJlZMO8cmZuaXNzZSBhdWYgU3RhbmRhcmR3ZXJ0ZTxicj7CoCDCoCDCoCDCoCDCoCDCoCAJLy8gZGEgZGFzIG5pY2h0IGdhbnogc28gZWluZmFjaCB6dSBiZXJlY2huZW4gaXN0Li4uPGJyPsKgIMKgIMKgIMKgIMKgIMKgIAlkb3VibGUgZ2VzID0gMSwgZmFjdG9yID0gTWF0aC5wb3coKChkb3VibGUpbXVsdGkyKS9tdWx0aTEsIGIuY2hhbmNlKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCWZvcihpbnQgaT0wO2kmbHQ7MTA7aSsrKXsvLyAxMCBaeWtsZW4uLi4gLSZndDsgZGFzIGzDpHVmdCBhdWYgZWluZSBaYWhsIHp1LCAxMCBEdXJjaGzDpHVmZSByZWljaGVuIGxvY2tlciB1bSBzaWNoIGRlbSBhbnp1bsOkaGVybjxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCWdlcyA9IGdlcypmYWN0b3IrMTsvLyBaZWl0IDopPGJyPsKgIMKgIMKgIMKgIMKgIMKgIAl9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCXNjb3JlKz0oPGEgcmVsPSJub2ZvbGxvdyIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9iLmlkLzEwMDAiIGNsYXNzPSJvdC1hbmNob3IgYmlkaV9pc29sYXRlIiBqc2xvZz0iMTA5Mjk7IHRyYWNrOmNsaWNrIiBkaXI9Imx0ciI+Yi5pZC8xMDAwPC9hPiA9PSAxIHx8IDxhIHJlbD0ibm9mb2xsb3ciIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vYi5pZC8xMDAwIiBjbGFzcz0ib3QtYW5jaG9yIGJpZGlfaXNvbGF0ZSIganNsb2c9IjEwOTI5OyB0cmFjazpjbGljayIgZGlyPSJsdHIiPmIuaWQvMTAwMDwvYT4gPT0gMyA/IGIuc2NvcmUyIDogYi50ZXN0ZSh0aGlzLCB4LCB5KSkgKiBleHBlY3RlZFNjb3JlKGIuY2hhbmNlKTsvLyBFaW53b2huZXIga29tbWVuIHNjaG9uIG5vY2ggOik8YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgcHVibGljIGJvb2xlYW4gdGljaygpezxicj7CoCDCoCDCoCDCoCDCoCDCoCBpZih0eXAudHlwPT0wKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIGZhbHNlOzxicj7CoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIGZvcihCZWR1ZXJmbmlzIGJlZHVlcmZuaXM6dHlwLmJlZHVlcmZuaXNzZSl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKGJlZHVlcmZuaXMuY2hhbmNlICogenVmYWxsLm5leHQoKSZsdDsxKXsvLyBzcGFydCBEaXZpc2lvbjxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAJaW50IGRlbHRhID0gYmVkdWVyZm5pcy50ZXN0ZSh0aGlzLHgseSk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIAlpZihkZWx0YT09MCl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIAkJcHJvYmxlbXNbcHJvYmxlbUluZGV4KysmYW1wOzddPWJlZHVlcmZuaXMucHJvYmxlbTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgCX0gZWxzZSB7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIAkJc2NvcmUrPWRlbHRhOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAJfTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgaWYodHlwLnR5cD09MSl7Ly8gV29obmhhdXM8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IGwgPSBudXR6ZXIubGVuZ3RoOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IoaW50IGk9MDtpJmx0O2w7aSsrKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgTWVuc2NoIGJld29obmVyPW51dHplcltpXTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYoYmV3b2huZXIhPW51bGwgJmFtcDsmYW1wOyBiZXdvaG5lci5hbHRlcisrKnp1ZmFsbC5uZXh0KCkmZ3Q7MzIwMCl7Ly8gR2VzdW5kaGVpdCBub2NoIGJlYWNodGVuISEhPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIGxvZXNjaGUgZGVuIE51dHplciBhdXMgZGVyIEJlc2NoYWVmdGlndW5nIHVuZCBkZW0gV29obmhhdXMgLSZndDsgd2lyZCBkYW5uIGdlbG9lc2NodC4uLjxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnQgbDIgPSBiZXdvaG5lci5iZXNjaGFlZnRpZ3VuZy5udXR6ZXIubGVuZ3RoOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IoaW50IGo9MDtqJmx0O2wyO2orKyl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmKGJld29obmVyLmVxdWFscyhiZXdvaG5lci5iZXNjaGFlZnRpZ3VuZy5udXR6ZXJbal0pKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYmV3b2huZXIuYmVzY2hhZWZ0aWd1bmcubnV0emVyW2pdPW51bGw7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAlmb3IoTWVuc2NoIG06bnV0emVyKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQlpZihtIT1udWxsICZhbXA7JmFtcDsgbS56dWhhdXNlPT1udWxsKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJLy8gZmluZGUgZGVtIEFyYmVpdGVyIGVpbiBuZXVlcyBadWhhdXNlLi4uPGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJCS8vIHRyZW5udCBkaWUgRmFtaWxpZW4gYXVmLi4uIGV0d2FzIHVucmVhbGlzdGlzY2ggYWJlciBuaWNodCB6dSB1bnJlYWxpc3Rpc2NoPGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJCWJvb2xlYW4gbm90b2s9dHJ1ZTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJYnI6Zm9yKGludCBpPTA7aSZsdDttYXBTaXplWDtpKyspezxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCQkJZm9yKGludCBqPTA7aiZsdDttYXBTaXplWTtqKyspezxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCQkJCUdlYmFldWRlIGcgPSBtYXBbaV1bal07PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJCQkJaWYoZyE9bnVsbCAmYW1wOyZhbXA7IGcudHlwLnR5cD09MSl7Ly8gV29obmhhdXM/PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJCQkJCWZvcihpbnQgaz0wO2smbHQ7Zy5udXR6ZXIubGVuZ3RoO2srKyl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJCQkJCQlNZW5zY2ggbW4gPSBnLm51dHplcltrXTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCQkJCWlmKG1uPT1udWxsKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCQkJCQlnLm51dHplcltrXSA9IG07Ly8gZWluZ2VtaWV0ZXQgLyBlaW5nZWthdWZ0PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJCQkJCQkJbS5nZWxkKj0wLjM7Ly8gR2VsZHZlcmx1c3Q8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCQkJCQlub3Rvaz1mYWxzZTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCQkJCQlicmVhayBicjs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCQkJCX08YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCQkJfTxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCQkJCX08YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCX08YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJfTxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCQlpZihub3Rvayl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJCQkvLyBkZXIgQXJiZWl0ZXIga29ubnRlIGtlaW4gWnVoYXVzZSBmaW5kZW4uLi48YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCS8vIC0mZ3Q7IEFyYmVpdGVyIHZlcmzDpHNzdCBkaWUgU3RhZHQuLi48YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCWZvcihpbnQgaT0wO2kmbHQ7bS5iZXNjaGFlZnRpZ3VuZy5udXR6ZXIubGVuZ3RoO2krKyl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJCQkJaWYobS5iZXNjaGFlZnRpZ3VuZy5udXR6ZXJbaV09PW0pezxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCQkJCQltLmJlc2NoYWVmdGlndW5nLm51dHplcltpXT1udWxsOzxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCQkJCX08YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJCX08YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJfTxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCX08YnI+wqAgwqAgwqAgwqAgwqAgwqAgCX08YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoCDCoCBzY29yZT1zY29yZSptdWx0aTIvbXVsdGkxOy8vICZxdW90O0JlZMO8cmZuaXNzZSZxdW90OyBzdGVpZ2VuPGJyPsKgIMKgIMKgIMKgIMKgIMKgIHBybzI1NiA9IChpbnQpIChzY29yZS90eXAubWF4c2NvcmUpOzxicj7CoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gcHJvMjU2Jmx0OzI7Ly8gbG9lc2NoZSBkYXMgR2ViYWV1ZGUgd2VubiBlcyBpaG0genUgc2NobGVjaHQgZ2VodDxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgcHVibGljIHZvaWQgdmVybGFzc2UoKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgaWYodHlwLnR5cD09MSl7Ly8gV29obmhhdXM8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCSBpZihudXR6ZXIhPW51bGwpezxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCSBmb3IoTWVuc2NoIG06bnV0emVyKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgCQkJIGlmKG0hPW51bGwpezxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCQkJLy8gc3VjaGUgZGFubiB2b24gZGVyIEFyYmVpdHNzdGVsbGUgbmV1ZSBXb2hub3J0ZSAoTGV1dGUgd29obmVuIGJlaSBLb2xsZWdlbiAvIEZyZXVuZGVuKTxicj7CoCDCoCDCoCDCoCDCoCDCoCAJCQkJIG0uenVoYXVzZSA9IG51bGw7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJCSB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAkJIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgCSB9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7Ly8gQmVzY2hhZWZ0aWd1bmc8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYobnV0emVyIT1udWxsKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgCWZvcihNZW5zY2ggbTpudXR6ZXIpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAJCWlmKG0hPW51bGwpezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAJCQltLmJlc2NoYWVmdGlndW5nID0gbnVsbDs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgCQl9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIAl9PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgcHVibGljIEJ1ZmZlcmVkSW1hZ2UgZ2V0SWNvbigpezxicj7CoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gdHlwLmltZ3NbKHR5cC5pbWdzLmxlbmd0aCpwcm8yNTYpL3BybzI1Nl07PGJyPsKgIMKgIMKgIMKgIH08YnI+wqAgwqAgfTxicj7CoCDCoMKgPGJyPsKgIMKgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTWVuc2NoIHs8YnI+wqAgwqAgwqAgwqAgcHVibGljIGludCBhbHRlciwgZ2VsZDsvLyBBbHRlcjogMTYgPSAxIEphaHIoZXJzdG1hbCk8YnI+wqAgwqAgwqAgwqAgcHVibGljIGJvb2xlYW4gbWFubjs8YnI+wqAgwqAgwqAgwqAgcHVibGljIEdlYmFldWRlIHp1aGF1c2UsIGJlc2NoYWVmdGlndW5nOzxicj7CoCDCoCDCoCDCoCBwdWJsaWMgTWVuc2NoKGludCBhbHRlciwgYm9vbGVhbiBtYW5uLCBHZWJhZXVkZSB6dWhhdXNlKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgdGhpcy5hbHRlcj1hbHRlcjt0aGlzLm1hbm49bWFubjt0aGlzLmdlbGQ9MDt0aGlzLnp1aGF1c2U9enVoYXVzZTs8YnI+wqAgwqAgwqAgwqAgfTxicj7CoCDCoCB9PGJyPsKgIMKgwqA8YnI+wqAgwqAgcHVibGljIHN0YXRpYyBjbGFzcyBSb2hHZWJhZXVkZSB7PGJyPsKgIMKgIMKgIMKgIHB1YmxpYyBpbnQgdywgaDs8YnI+wqAgwqAgwqAgwqAgcHVibGljIFN0cmluZyBuYW1lOzxicj7CoCDCoCDCoCDCoCBwdWJsaWMgaW50IHR5cCwgbnV0emVyOzxicj7CoCDCoCDCoCDCoCBwdWJsaWMgZG91YmxlIG1heHNjb3JlID0gMDs8YnI+wqAgwqAgwqAgwqAgcHVibGljIFJvaEdlYmFldWRlKFN0cmluZyBuYW1lLCBpbnQgdHlwLCBpbnQgdywgaW50IGgsIEJlZHVlcmZuaXNbXSBiZWR1ZXJmbmlzc2UsIEJ1ZmZlcmVkSW1hZ2VbXSBpbWdzKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgPGEgcmVsPSJub2ZvbGxvdyIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly90aGlzLm5hbWUiIGNsYXNzPSJvdC1hbmNob3IgYmlkaV9pc29sYXRlIiBqc2xvZz0iMTA5Mjk7IHRyYWNrOmNsaWNrIiBkaXI9Imx0ciI+dGhpcy5uYW1lPC9hPj1uYW1lO3RoaXMuYmVkdWVyZm5pc3NlPWJlZHVlcmZuaXNzZTt0aGlzLmltZ3M9aW1nczt0aGlzLnR5cD10eXA7dGhpcy53PXc7dGhpcy5oPWg7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIC8vIGJlcmVjaG5lIGRlbiBHbMO8Y2tsaWNoa2VpdHNzY29yZS4uLjxicj7CoCDCoCDCoCDCoCDCoCDCoCBmb3IoQmVkdWVyZm5pcyBiOmJlZHVlcmZuaXNzZSl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIAltYXhzY29yZSArPSBiLnNjb3JlMiAqIGV4cGVjdGVkU2NvcmUoYi5jaGFuY2UpOzxicj7CoCDCoCDCoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgcHVibGljIEJlZHVlcmZuaXNbXSBiZWR1ZXJmbmlzc2U7PGJyPsKgIMKgIMKgIMKgIHB1YmxpYyBCdWZmZXJlZEltYWdlW10gaW1nczs8YnI+wqAgwqAgfTxicj7CoCDCoMKgPGJyPsKgIMKgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQmVkdWVyZm5pcyB7PGJyPsKgIMKgIMKgIMKgIGludCByYWQxLCByYWQyLCBzY29yZTEsIHNjb3JlMiwgaWQsIGNoYW5jZTs8YnI+wqAgwqAgwqAgwqAgU3RyaW5nIG5hbWU7PGJyPsKgIMKgIMKgIMKgIFN0cmluZyBwcm9ibGVtID0gJnF1b3Q7JnF1b3Q7Ozxicj7CoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIHB1YmxpYyBCZWR1ZXJmbmlzKGludCByMSwgaW50IHIyLCBpbnQgczEsIGludCBzMiwgaW50IGlkLCBTdHJpbmcgbmFtZSwgaW50IGNoYW5jZSl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIDxhIHJlbD0ibm9mb2xsb3ciIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vdGhpcy5uYW1lIiBjbGFzcz0ib3QtYW5jaG9yIGJpZGlfaXNvbGF0ZSIganNsb2c9IjEwOTI5OyB0cmFjazpjbGljayIgZGlyPSJsdHIiPnRoaXMubmFtZTwvYT49bmFtZTtyYWQxPXIxO3JhZDI9cjI7c2NvcmUxPXMxO3Njb3JlMj1zMjs8YSByZWw9Im5vZm9sbG93IiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3RoaXMuaWQiIGNsYXNzPSJvdC1hbmNob3IgYmlkaV9pc29sYXRlIiBqc2xvZz0iMTA5Mjk7IHRyYWNrOmNsaWNrIiBkaXI9Imx0ciI+dGhpcy5pZDwvYT49aWQ7dGhpcy5jaGFuY2U9Y2hhbmNlOzxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgcHVibGljIGludCB0ZXN0ZShHZWJhZXVkZSBnLCBpbnQgeCwgaW50IHkpey8vIHNjb3JlLi4uPGJyPsKgIMKgIMKgIMKgIAk8YnI+wqAgwqAgwqAgwqAgCXN3aXRjaChpZC8xMDAwKXs8YnI+wqAgwqAgwqAgwqAgCWNhc2UgMDovLyBkZWtvPGJyPsKgIMKgIMKgIMKgIAkJYnJlYWs7PGJyPsKgIMKgIMKgIMKgIAljYXNlIDE6Ly8gTWl0YXJiZWl0ZXI8YnI+wqAgwqAgwqAgwqAgCQlicmVhazs8YnI+wqAgwqAgwqAgwqAgCWNhc2UgMjovLyBIYXVzIC8gR2Viw6R1ZGU8YnI+wqAgwqAgwqAgwqAgCQlicmVhazs8YnI+wqAgwqAgwqAgwqAgCWNhc2UgMzovLyBCZXdvaG5lcjxicj7CoCDCoCDCoCDCoCAJCWJyZWFrOzxicj7CoCDCoCDCoCDCoCAJfTxicj7CoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gMDs8YnI+wqAgwqAgwqAgwqAgfTxicj7CoCDCoCB9PGJyPsKgIMKgwqA8YnI+wqAgwqAgcHVibGljIHN0YXRpYyBjbGFzcyBSZXNzb3VyY2VuS2FydGUgezxicj7CoCDCoCDCoCDCoCBQZXJsaW4yRCBhLCBiLCBjLCBkOzxicj7CoCDCoCDCoCDCoCBwdWJsaWMgUmVzc291cmNlbkthcnRlKGxvbmcgc2VlZCl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIFJhbmRvbSByID0gbmV3IFJhbmRvbShzZWVkKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgYSA9IG5ldyBQZXJsaW4yRCgobG9uZykoci5uZXh0KCkqMTAwMDAwLjApLCA4KTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgYiA9IG5ldyBQZXJsaW4yRCgobG9uZykoci5uZXh0KCkqMTAwMDAwLjApLDE2KTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgYyA9IG5ldyBQZXJsaW4yRCgobG9uZykoci5uZXh0KCkqMTAwMDAwLjApLDMyKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgZCA9IG5ldyBQZXJsaW4yRCgobG9uZykoci5uZXh0KCkqMTAwMDAwLjApLDY0KTs8YnI+wqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIHB1YmxpYyBkb3VibGUgZ2V0KGRvdWJsZSB4LCBkb3VibGUgeSl7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBzcSgoYS5nZXROb2lzZUF0KHgseSkrYi5nZXROb2lzZUF0KHgseSkrYy5nZXROb2lzZUF0KHgseSkrZC5nZXROb2lzZUF0KHgseSkpKjAuMjUpOzxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIMKgIMKgwqA8YnI+wqAgwqAgwqAgwqAgcHVibGljIHN0YXRpYyBkb3VibGUgc3EoZG91YmxlIGQpezxicj7CoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gZCpkOzxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIH08YnI+wqAgwqDCoDxicj7CoCDCoCBwdWJsaWMgc3RhdGljIGNsYXNzIFBlcmxpbjJEIHs8YnI+wqAgwqAgwqAgwqAgcHJpdmF0ZSBsb25nIHNlZWQ7PGJyPsKgIMKgIMKgIMKgIHByaXZhdGUgUmFuZG9tIHJhbmQ7PGJyPsKgIMKgIMKgIMKgIHByaXZhdGUgZG91YmxlIGZyZXF1ZW5jeSwgcGVyaW9kOzxicj7CoCDCoCDCoCDCoCDCoDxicj7CoCDCoCDCoCDCoCDCoHB1YmxpYyBQZXJsaW4yRChsb25nIHNlZWQsIGRvdWJsZSBvY3RhdmUpezxicj7CoCDCoCDCoCDCoCDCoCDCoCB0aGlzLnNlZWQgPSBzZWVkOzxicj7CoCDCoCDCoCDCoCDCoCDCoCB0aGlzLmZyZXF1ZW5jeSA9IG9jdGF2ZTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgdGhpcy5wZXJpb2QgPSAxZi90aGlzLmZyZXF1ZW5jeTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgdGhpcy5yYW5kID0gbmV3IFJhbmRvbSgwKTs8YnI+wqAgwqAgwqAgwqAgwqB9PGJyPsKgIMKgIMKgIMKgIHB1YmxpYyBkb3VibGUgZ2V0Tm9pc2VBdChkb3VibGUgeCwgZG91YmxlIHopezxicj7CoCDCoCDCoCDCoCDCoCDCoCBpbnQgeG1pbiA9IChpbnQpIE1hdGguZmxvb3IoeCAqIHBlcmlvZCk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIGludCB4bWF4ID0geG1pbiArIDE7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIGludCB6bWluID0gKGludCkgTWF0aC5mbG9vcih6ICogcGVyaW9kKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgaW50IHptYXggPSB6bWluICsgMTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIGNvc2luZUludGVycG9sYXRlKDxicj4JIMKgIMKgIMKgIMKgIMKgIMKgY29zaW5lSW50ZXJwb2xhdGUoPGJyPgkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBnZXRSYW5kb21BdFBvc2l0aW9uKHhtaW4sIHptaW4pLDxicj4JIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ2V0UmFuZG9tQXRQb3NpdGlvbih4bWF4LCB6bWluKSw8YnI+CSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCh4IC0geG1pbiAqIGZyZXF1ZW5jeSkgKiBwZXJpb2Q8YnI+CSDCoCDCoCDCoCDCoCDCoCDCoCksPGJyPgkgwqAgwqAgwqAgwqAgwqAgwqBjb3NpbmVJbnRlcnBvbGF0ZSg8YnI+CSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdldFJhbmRvbUF0UG9zaXRpb24oeG1pbiwgem1heCksPGJyPgkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBnZXRSYW5kb21BdFBvc2l0aW9uKHhtYXgsIHptYXgpLDxicj4JIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKHggLSB4bWluICogZnJlcXVlbmN5KSAqIHBlcmlvZDxicj4JIMKgIMKgIMKgIMKgIMKgIMKgKSw8YnI+CSDCoCDCoCDCoCDCoCDCoCDCoCh6IC0gem1pbiAqIGZyZXF1ZW5jeSkgKiBwZXJpb2Q8YnI+wqAgwqAgwqAgwqAgwqAgwqAgKTs8YnI+wqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCDCoDxicj7CoCDCoCDCoCDCoCBwcml2YXRlIGRvdWJsZSBnZXRSYW5kb21BdFBvc2l0aW9uKGludCB4LCBpbnQgeil7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIHJhbmQuc2VlZCA9IHNlZWQgXiAoNDQ1MjEzMjE1NjQxTCp4KSBeICgxNDc1NzEyNzE3MUwqeik7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiByYW5kLm5leHQoKTs8YnI+wqAgwqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoMKgPGJyPsKgIMKgIMKgIMKgIHB1YmxpYyBzdGF0aWMgZG91YmxlIGNvc2luZUludGVycG9sYXRlKGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIHgpezxicj7CoCDCoCDCoCDCoCDCoCDCoCBkb3VibGUgZiA9ICgxLjAgLSBNYXRoLmNvcyh4ICogTWF0aC5QSSkpICogMC41Ozxicj7CoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gZCAqICgxLjAgLSBmKSArIGUgKiBmOzxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIH08YnI+wqAgwqDCoDxicj7CoCDCoCBwdWJsaWMgc3RhdGljIGNsYXNzIFJhbmRvbSB7PGJyPsKgIMKgIMKgIMKgIHB1YmxpYyBsb25nIHNlZWQ7PGJyPsKgIMKgIMKgIMKgIHB1YmxpYyBSYW5kb20obG9uZyBzZWVkKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgdGhpcy5zZWVkPXNlZWQ7PGJyPsKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqDCoDxicj7CoCDCoCDCoCDCoCBwdWJsaWMgZG91YmxlIG5leHQoKXs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgc2VlZCA9ICgyMTQwMTMqc2VlZCsyNTMxMDExKSZhbXA7MHhmZmZmZmZmZmZmTDs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICgoaW50KShzZWVkJmd0OyZndDsxNikmYW1wOzB4ZmZmZikqMC4wMDAwMTUyNTg3ODkwNjI1Ozxicj7CoCDCoCDCoCDCoCB9PGJyPsKgIMKgIH08YnI+wqAgwqDCoDxicj59,,,326750540,326750540,0;