f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAADUlQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGh0dHB1dGlsOwpwa2dwYXRoIG5ldC9odHRwL2h0dHB1dGlsOwpwcmlvcml0eSAxMzsKaW1wb3J0IGJ1ZmlvIGJ1ZmlvICJidWZpbyI7CmltcG9ydCBieXRlcyBieXRlcyAiYnl0ZXMiOwppbXBvcnQgZXJyb3JzIGVycm9ycyAiZXJyb3JzIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgaW91dGlsIGlvL2lvdXRpbCAiaW8vaW91dGlsIjsKaW1wb3J0IGxvZyBsb2cgImxvZyI7CmltcG9ydCBuZXQgbmV0ICJuZXQiOwppbXBvcnQgaHR0cCBuZXQvaHR0cCAibmV0L2h0dHAiOwppbXBvcnQgaW50ZXJuYWwgbmV0L2h0dHAvaW50ZXJuYWwgIm5ldC9odHRwL2ludGVybmFsIjsKaW1wb3J0IHRleHRwcm90byBuZXQvdGV4dHByb3RvICJuZXQvdGV4dHByb3RvIjsKaW1wb3J0IHVybCBuZXQvdXJsICJuZXQvdXJsIjsKaW1wb3J0IHN0cmluZ3Mgc3RyaW5ncyAic3RyaW5ncyI7CmltcG9ydCBzeW5jIHN5bmMgInN5bmMiOwppbXBvcnQgdGltZSB0aW1lICJ0aW1lIjsKaW5pdCBodHRwdXRpbCBuZXRfaHR0cF9odHRwdXRpbC4uaW1wb3J0IDEzIG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmFuZCBtYXRoX3JhbmQuLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBiaW5hcnkgZW5jb2RpbmdfYmluYXJ5Li5pbXBvcnQgNCBieXRlcyBieXRlcy4uaW1wb3J0IDQgY2lwaGVyIGNyeXB0b19jaXBoZXIuLmltcG9ydCA0IHN5c2NhbGwgaW50ZXJuYWxfc3lzY2FsbC4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBiYXNlNjQgZW5jb2RpbmdfYmFzZTY0Li5pbXBvcnQgNSBidWZpbyBidWZpby4uaW1wb3J0IDUgY3JjMzIgaGFzaF9jcmMzMi4uaW1wb3J0IDUgY3J5cHRvIGNyeXB0by4uaW1wb3J0IDUgZGVzIGNyeXB0b19kZXMuLmltcG9ydCA1IG9zIG9zLi5pbXBvcnQgNSBwYXRoIHBhdGguLmltcG9ydCA1IGZpbGVwYXRoIHBhdGhfZmlsZXBhdGguLmltcG9ydCA2IGZtdCBmbXQuLmltcG9ydCA2IG1kNSBjcnlwdG9fbWQ1Li5pbXBvcnQgNiBuZXQgbmV0Li5pbXBvcnQgNiBwZW0gZW5jb2RpbmdfcGVtLi5pbXBvcnQgNiBzaGExIGNyeXB0b19zaGExLi5pbXBvcnQgNiBzaGEyNTYgY3J5cHRvX3NoYTI1Ni4uaW1wb3J0IDYgc2hhNTEyIGNyeXB0b19zaGE1MTIuLmltcG9ydCA2IGJpZyBtYXRoX2JpZy4uaW1wb3J0IDcgZmxhdGUgY29tcHJlc3NfZmxhdGUuLmltcG9ydCA3IGhleCBlbmNvZGluZ19oZXguLmltcG9ydCA3IGludGVybmFsIG5ldF9odHRwX2ludGVybmFsLi5pbXBvcnQgNyBpb3V0aWwgaW9faW91dGlsLi5pbXBvcnQgNyBsb2cgbG9nLi5pbXBvcnQgNyBtaW1lIG1pbWUuLmltcG9ydCA3IGFzbjEgZW5jb2RpbmdfYXNuMS4uaW1wb3J0IDggZHNhIGNyeXB0b19kc2EuLmltcG9ydCA4IGVsbGlwdGljIGNyeXB0b19lbGxpcHRpYy4uaW1wb3J0IDggZ3ppcCBjb21wcmVzc19nemlwLi5pbXBvcnQgOCByYW5kIGNyeXB0b19yYW5kLi5pbXBvcnQgOCB0ZXh0cHJvdG8gbmV0X3RleHRwcm90by4uaW1wb3J0IDggZWNkc2EgY3J5cHRvX2VjZHNhLi5pbXBvcnQgOSBtdWx0aXBhcnQgbWltZV9tdWx0aXBhcnQuLmltcG9ydCA5IHBraXggY3J5cHRvX3g1MDlfcGtpeC4uaW1wb3J0IDkgcnNhIGNyeXB0b19yc2EuLmltcG9ydCA5IHg1MDkgY3J5cHRvX3g1MDkuLmltcG9ydCAxMCB0bHMgY3J5cHRvX3Rscy4uaW1wb3J0IDExIGh0dHAgbmV0X2h0dHAuLmltcG9ydCAxMjsKdHlwZSA8dHlwZSAxICJDbGllbnRDb25uIiA8dHlwZSAyIHN0cnVjdCB7IC5uZXQvaHR0cC9odHRwdXRpbC5sayA8dHlwZSAzICJzeW5jLk11dGV4IiA8dHlwZSA0IHN0cnVjdCB7IC5zeW5jLnN0YXRlIDx0eXBlIC0zPjsgLnN5bmMuc2VtYSA8dHlwZSAtNz47IH0+CiBmdW5jIChtIDx0eXBlIDUgKjx0eXBlIDM+PikgVW5sb2NrICgpOwogZnVuYyAobSA8dHlwZSA1PikgTG9jayAoKTsKPjsgLm5ldC9odHRwL2h0dHB1dGlsLmMgPHR5cGUgNiAibmV0LkNvbm4iIDx0eXBlIDcgaW50ZXJmYWNlIHsgUmVhZCAoYiA8dHlwZSA4IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFdyaXRlIChiIDx0eXBlIDkgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgTG9jYWxBZGRyICgpIDx0eXBlIDEwICJuZXQuQWRkciIgPHR5cGUgMTEgaW50ZXJmYWNlIHsgTmV0d29yayAoKSA8dHlwZSAtMTY+OyBTdHJpbmcgKCkgPHR5cGUgLTE2PjsgfT4+OyBSZW1vdGVBZGRyICgpIDx0eXBlIDEwPjsgU2V0RGVhZGxpbmUgKHQgPHR5cGUgMTIgInRpbWUuVGltZSIgPHR5cGUgMTMgc3RydWN0IHsgLnRpbWUuc2VjIDx0eXBlIC00PjsgLnRpbWUubnNlYyA8dHlwZSAtMz47IC50aW1lLmxvYyA8dHlwZSAxNCAqPHR5cGUgMTUgInRpbWUuTG9jYXRpb24iIDx0eXBlIDE2IHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUuem9uZSA8dHlwZSAxNyBbXSA8dHlwZSAxOCAiLnRpbWUuem9uZSIgPHR5cGUgMTkgc3RydWN0IHsgLnRpbWUubmFtZSA8dHlwZSAtMTY+OyAudGltZS5vZmZzZXQgPHR5cGUgLTExPjsgLnRpbWUuaXNEU1QgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUudHggPHR5cGUgMjAgW10gPHR5cGUgMjEgIi50aW1lLnpvbmVUcmFucyIgPHR5cGUgMjIgc3RydWN0IHsgLnRpbWUud2hlbiA8dHlwZSAtND47IC50aW1lLmluZGV4IDx0eXBlIC01PjsgLnRpbWUuaXNzdGQgPHR5cGUgLTE1PjsgLnRpbWUuaXN1dGMgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUuY2FjaGVTdGFydCA8dHlwZSAtND47IC50aW1lLmNhY2hlRW5kIDx0eXBlIC00PjsgLnRpbWUuY2FjaGVab25lIDx0eXBlIDIzICo8dHlwZSAxOD4+OyB9PgogZnVuYyAobCA8dHlwZSAyNCAqPHR5cGUgMTU+PikgLnRpbWUuZmlyc3Rab25lVXNlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAobCA8dHlwZSAyND4pIC50aW1lLmxvb2t1cE5hbWUgKG5hbWUgPHR5cGUgLTE2PiwgdW5peCA8dHlwZSAtND4pIChvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jIChsIDx0eXBlIDI0PikgLnRpbWUubG9va3VwIChzZWMgPHR5cGUgLTQ+KSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgc3RhcnQgPHR5cGUgLTQ+LCBlbmQgPHR5cGUgLTQ+KTsKIGZ1bmMgKGwgPHR5cGUgMjQ+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGwgPHR5cGUgMjQ+KSAudGltZS5sb29rdXBGaXJzdFpvbmUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGwgPHR5cGUgMjQ+KSAudGltZS5nZXQgKCkgPHR5cGUgMjQ+Owo+PjsgfT4KIGZ1bmMgKHQgPHR5cGUgMTI+KSBBZnRlciAodSA8dHlwZSAxMj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDEyPikgTWFyc2hhbFRleHQgKCkgKD8gPHR5cGUgMjUgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDEyPikgRGF0ZSAoKSAoeWVhciA8dHlwZSAtMTE+LCBtb250aCA8dHlwZSAyNiAidGltZS5Nb250aCIgPHR5cGUgLTExPgogZnVuYyAobSA8dHlwZSAyNj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+LCBkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDEyPikgLnRpbWUuYWJzICgpIDx0eXBlIC04PjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBXZWVrZGF5ICgpIDx0eXBlIDI3ICJ0aW1lLldlZWtkYXkiIDx0eXBlIC0xMT4KIGZ1bmMgKGQgPHR5cGUgMjc+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBOYW5vc2Vjb25kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDI4ICo8dHlwZSAxMj4+KSBHb2JEZWNvZGUgKGRhdGEgPHR5cGUgMjkgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh0IDx0eXBlIDEyPikgSW4gKGxvYyA8dHlwZSAxND4pIDx0eXBlIDEyPjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBMb2NhbCAoKSA8dHlwZSAxMj47CiBmdW5jICh0IDx0eXBlIDEyPikgTW9udGggKCkgPHR5cGUgMjY+OwogZnVuYyAodCA8dHlwZSAxMj4pIEhvdXIgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBNYXJzaGFsQmluYXJ5ICgpICg/IDx0eXBlIDMwIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAxMj4pIFVuaXhOYW5vICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBFcXVhbCAodSA8dHlwZSAxMj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDEyPikgRm9ybWF0IChsYXlvdXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBBZGREYXRlICh5ZWFycyA8dHlwZSAtMTE+LCBtb250aHMgPHR5cGUgLTExPiwgZGF5cyA8dHlwZSAtMTE+KSA8dHlwZSAxMj47CiBmdW5jICh0IDx0eXBlIDEyPikgWm9uZSAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDEyPikgRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDEyPikgQ2xvY2sgKCkgKGhvdXIgPHR5cGUgLTExPiwgbWluIDx0eXBlIC0xMT4sIHNlYyA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBNYXJzaGFsSlNPTiAoKSAoPyA8dHlwZSAzMSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBVVEMgKCkgPHR5cGUgMTI+OwogZnVuYyAodCA8dHlwZSAxMj4pIC50aW1lLmRhdGUgKGZ1bGwgPHR5cGUgLTE1PikgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgMjY+LCBkYXkgPHR5cGUgLTExPiwgeWRheSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBJc1plcm8gKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBCZWZvcmUgKHUgPHR5cGUgMTI+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxMj4pIFNlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxMj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAxMj4pIE1pbnV0ZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxMj4pIFJvdW5kIChkIDx0eXBlIDMyICJ0aW1lLkR1cmF0aW9uIiA8dHlwZSAtND4KIGZ1bmMgKGQgPHR5cGUgMzI+KSBTZWNvbmRzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDMyPikgTWludXRlcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAzMj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZCA8dHlwZSAzMj4pIEhvdXJzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDMyPikgTmFub3NlY29uZHMgKCkgPHR5cGUgLTQ+Owo+KSA8dHlwZSAxMj47CiBmdW5jICh0IDx0eXBlIDEyPikgU3ViICh1IDx0eXBlIDEyPikgPHR5cGUgMzI+OwogZnVuYyAodCA8dHlwZSAyOD4pIFVubWFyc2hhbFRleHQgKGRhdGEgPHR5cGUgMzMgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDEyPikgVW5peCAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDEyPikgVHJ1bmNhdGUgKGQgPHR5cGUgMzI+KSA8dHlwZSAxMj47CiBmdW5jICh0IDx0eXBlIDEyPikgQWRkIChkIDx0eXBlIDMyPikgPHR5cGUgMTI+OwogZnVuYyAodCA8dHlwZSAxMj4pIEdvYkVuY29kZSAoKSAoPyA8dHlwZSAzNCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBMb2NhdGlvbiAoKSA8dHlwZSAxND47CiBmdW5jICh0IDx0eXBlIDI4PikgVW5tYXJzaGFsQmluYXJ5IChkYXRhIDx0eXBlIDM1IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAxMj4pIElTT1dlZWsgKCkgKHllYXIgPHR5cGUgLTExPiwgd2VlayA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMTI+KSAudGltZS5sb2NhYnMgKCkgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4sIGFicyA8dHlwZSAtOD4pOwogZnVuYyAodCA8dHlwZSAxMj4pIFllYXIgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBZZWFyRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDI4PikgVW5tYXJzaGFsSlNPTiAoZGF0YSA8dHlwZSAzNiBbXSA8dHlwZSAtMjA+PikgKGVyciA8dHlwZSAtMTk+KTsKPikgPHR5cGUgLTE5PjsgU2V0UmVhZERlYWRsaW5lICh0IDx0eXBlIDEyPikgPHR5cGUgLTE5PjsgU2V0V3JpdGVEZWFkbGluZSAodCA8dHlwZSAxMj4pIDx0eXBlIC0xOT47IH0+PjsgLm5ldC9odHRwL2h0dHB1dGlsLnIgPHR5cGUgMzcgKjx0eXBlIDM4ICJidWZpby5SZWFkZXIiIDx0eXBlIDM5IHN0cnVjdCB7IC5idWZpby5idWYgPHR5cGUgNDAgW10gPHR5cGUgLTIwPj47IC5idWZpby5yZCA8dHlwZSA0MSAiaW8uUmVhZGVyIiA8dHlwZSA0MiBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDQzIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgLmJ1ZmlvLnIgPHR5cGUgLTExPjsgLmJ1ZmlvLncgPHR5cGUgLTExPjsgLmJ1ZmlvLmVyciA8dHlwZSAtMTk+OyAuYnVmaW8ubGFzdEJ5dGUgPHR5cGUgLTExPjsgLmJ1ZmlvLmxhc3RSdW5lU2l6ZSA8dHlwZSAtMTE+OyB9PgogZnVuYyAoYiA8dHlwZSA0NCAqPHR5cGUgMzg+PikgVW5yZWFkQnl0ZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSA0ND4pIFJlYWRTdHJpbmcgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIC0xNj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNDQ+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDQ0PikgV3JpdGVUbyAodyA8dHlwZSA0NSAiaW8uV3JpdGVyIiA8dHlwZSA0NiBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSA0NyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSA0ND4pIFJlYWRCeXRlcyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgNDggW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNDQ+KSAuYnVmaW8ud3JpdGVCdWYgKHcgPHR5cGUgNDU+KSAoPyA8dHlwZSAtND4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDQ0PikgUmVhZExpbmUgKCkgKGxpbmUgPHR5cGUgNDkgW10gPHR5cGUgLTIwPj4sIGlzUHJlZml4IDx0eXBlIC0xNT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNDQ+KSBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNDQ+KSBSZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDUwIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDQ0PikgUmVzZXQgKHIgPHR5cGUgNDE+KTsKIGZ1bmMgKGIgPHR5cGUgNDQ+KSBSZWFkIChwIDx0eXBlIDUxIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDQ0PikgLmJ1ZmlvLmZpbGwgKCk7CiBmdW5jIChiIDx0eXBlIDQ0PikgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSA0ND4pIEJ1ZmZlcmVkICgpIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDQ0PikgLmJ1ZmlvLnJlc2V0IChidWYgPHR5cGUgNTIgW10gPHR5cGUgLTIwPj4sIHIgPHR5cGUgNDE+KTsKIGZ1bmMgKGIgPHR5cGUgNDQ+KSBQZWVrIChuIDx0eXBlIC0xMT4pICg/IDx0eXBlIDUzIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSA0ND4pIC5idWZpby5yZWFkRXJyICgpIDx0eXBlIC0xOT47Cj4+OyAubmV0L2h0dHAvaHR0cHV0aWwucmUgPHR5cGUgLTE5PjsgLm5ldC9odHRwL2h0dHB1dGlsLndlIDx0eXBlIC0xOT47IC5uZXQvaHR0cC9odHRwdXRpbC5sYXN0Ym9keSA8dHlwZSA1NCAiaW8uUmVhZENsb3NlciIgPHR5cGUgNTUgaW50ZXJmYWNlIHsgPyA8dHlwZSA0MT47ID8gPHR5cGUgNTYgImlvLkNsb3NlciIgPHR5cGUgNTcgaW50ZXJmYWNlIHsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgfT4+OyB9Pj47IC5uZXQvaHR0cC9odHRwdXRpbC5ucmVhZCA8dHlwZSAtMTE+OyAubmV0L2h0dHAvaHR0cHV0aWwubndyaXR0ZW4gPHR5cGUgLTExPjsgLm5ldC9odHRwL2h0dHB1dGlsLnBpcGVyZXEgPHR5cGUgNTggbWFwIFs8dHlwZSA1OSAqPHR5cGUgNjAgIm5ldC9odHRwLlJlcXVlc3QiIDx0eXBlIDYxIHN0cnVjdCB7IE1ldGhvZCA8dHlwZSAtMTY+OyBVUkwgPHR5cGUgNjIgKjx0eXBlIDYzICJuZXQvdXJsLlVSTCIgPHR5cGUgNjQgc3RydWN0IHsgU2NoZW1lIDx0eXBlIC0xNj47IE9wYXF1ZSA8dHlwZSAtMTY+OyBVc2VyIDx0eXBlIDY1ICo8dHlwZSA2NiAibmV0L3VybC5Vc2VyaW5mbyIgPHR5cGUgNjcgc3RydWN0IHsgLm5ldC91cmwudXNlcm5hbWUgPHR5cGUgLTE2PjsgLm5ldC91cmwucGFzc3dvcmQgPHR5cGUgLTE2PjsgLm5ldC91cmwucGFzc3dvcmRTZXQgPHR5cGUgLTE1PjsgfT4KIGZ1bmMgKHUgPHR5cGUgNjggKjx0eXBlIDY2Pj4pIFVzZXJuYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jICh1IDx0eXBlIDY4PikgUGFzc3dvcmQgKCkgKD8gPHR5cGUgLTE2PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHUgPHR5cGUgNjg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPj47IEhvc3QgPHR5cGUgLTE2PjsgUGF0aCA8dHlwZSAtMTY+OyBSYXdRdWVyeSA8dHlwZSAtMTY+OyBGcmFnbWVudCA8dHlwZSAtMTY+OyB9PgogZnVuYyAodSA8dHlwZSA2OSAqPHR5cGUgNjM+PikgSXNBYnMgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHUgPHR5cGUgNjk+KSBSZXF1ZXN0VVJJICgpIDx0eXBlIC0xNj47CiBmdW5jICh1IDx0eXBlIDY5PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh1IDx0eXBlIDY5PikgUmVzb2x2ZVJlZmVyZW5jZSAocmVmIDx0eXBlIDY5PikgPHR5cGUgNjk+OwogZnVuYyAodSA8dHlwZSA2OT4pIFF1ZXJ5ICgpIDx0eXBlIDcwICJuZXQvdXJsLlZhbHVlcyIgPHR5cGUgNzEgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA3MiBbXSA8dHlwZSAtMTY+Pj4KIGZ1bmMgKHYgPHR5cGUgNzA+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSA3MD4pIEVuY29kZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSA3MD4pIFNldCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAodiA8dHlwZSA3MD4pIEFkZCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAodiA8dHlwZSA3MD4pIERlbCAoa2V5IDx0eXBlIC0xNj4pOwo+OwogZnVuYyAodSA8dHlwZSA2OT4pIFBhcnNlIChyZWYgPHR5cGUgLTE2PikgKD8gPHR5cGUgNjk+LCA/IDx0eXBlIC0xOT4pOwo+PjsgUHJvdG8gPHR5cGUgLTE2PjsgUHJvdG9NYWpvciA8dHlwZSAtMTE+OyBQcm90b01pbm9yIDx0eXBlIC0xMT47IEhlYWRlciA8dHlwZSA3MyAibmV0L2h0dHAuSGVhZGVyIiA8dHlwZSA3NCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDc1IFtdIDx0eXBlIC0xNj4+PgogZnVuYyAoaCA8dHlwZSA3Mz4pIEdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChoIDx0eXBlIDczPikgV3JpdGUgKHcgPHR5cGUgNDU+KSA8dHlwZSAtMTk+OwogZnVuYyAoaCA8dHlwZSA3Mz4pIC5uZXQvaHR0cC5nZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSA3Mz4pIFdyaXRlU3Vic2V0ICh3IDx0eXBlIDQ1PiwgZXhjbHVkZSA8dHlwZSA3NiBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTk+OwogZnVuYyAoaCA8dHlwZSA3Mz4pIFNldCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAoaCA8dHlwZSA3Mz4pIC5uZXQvaHR0cC5zb3J0ZWRLZXlWYWx1ZXMgKGV4Y2x1ZGUgPHR5cGUgNzcgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTU+PikgKGt2cyA8dHlwZSA3OCBbXSA8dHlwZSA3OSAiLm5ldC9odHRwLmtleVZhbHVlcyIgPHR5cGUgODAgc3RydWN0IHsgLm5ldC9odHRwLmtleSA8dHlwZSAtMTY+OyAubmV0L2h0dHAudmFsdWVzIDx0eXBlIDgxIFtdIDx0eXBlIC0xNj4+OyB9Pj4+LCBocyA8dHlwZSA4MiAqPHR5cGUgODMgIi5uZXQvaHR0cC5oZWFkZXJTb3J0ZXIiIDx0eXBlIDg0IHN0cnVjdCB7IC5uZXQvaHR0cC5rdnMgPHR5cGUgODUgW10gPHR5cGUgNzk+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgODYgKjx0eXBlIDgzPj4pIExlc3MgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocyA8dHlwZSA4Nj4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAocyA8dHlwZSA4Nj4pIFN3YXAgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KTsKPj4pOwogZnVuYyAoaCA8dHlwZSA3Mz4pIEFkZCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAoaCA8dHlwZSA3Mz4pIC5uZXQvaHR0cC5jbG9uZSAoKSA8dHlwZSA3Mz47CiBmdW5jIChoIDx0eXBlIDczPikgRGVsIChrZXkgPHR5cGUgLTE2Pik7Cj47IEJvZHkgPHR5cGUgNTQ+OyBDb250ZW50TGVuZ3RoIDx0eXBlIC00PjsgVHJhbnNmZXJFbmNvZGluZyA8dHlwZSA4NyBbXSA8dHlwZSAtMTY+PjsgQ2xvc2UgPHR5cGUgLTE1PjsgSG9zdCA8dHlwZSAtMTY+OyBGb3JtIDx0eXBlIDcwPjsgUG9zdEZvcm0gPHR5cGUgNzA+OyBNdWx0aXBhcnRGb3JtIDx0eXBlIDg4ICo8dHlwZSA4OSAibWltZS9tdWx0aXBhcnQuRm9ybSIgIm11bHRpcGFydCIgPHR5cGUgOTAgc3RydWN0IHsgVmFsdWUgPHR5cGUgOTEgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA5MiBbXSA8dHlwZSAtMTY+Pj47IEZpbGUgPHR5cGUgOTMgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA5NCBbXSA8dHlwZSA5NSAqPHR5cGUgOTYgIm1pbWUvbXVsdGlwYXJ0LkZpbGVIZWFkZXIiIDx0eXBlIDk3IHN0cnVjdCB7IEZpbGVuYW1lIDx0eXBlIC0xNj47IEhlYWRlciA8dHlwZSA5OCAibmV0L3RleHRwcm90by5NSU1FSGVhZGVyIiA8dHlwZSA5OSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDEwMCBbXSA8dHlwZSAtMTY+Pj4KIGZ1bmMgKGggPHR5cGUgOTg+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSA5OD4pIFNldCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAoaCA8dHlwZSA5OD4pIEFkZCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAoaCA8dHlwZSA5OD4pIERlbCAoa2V5IDx0eXBlIC0xNj4pOwo+OyAubWltZS9tdWx0aXBhcnQuY29udGVudCA8dHlwZSAxMDEgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC50bXBmaWxlIDx0eXBlIC0xNj47IH0+CiBmdW5jIChmaCA8dHlwZSAxMDIgKjx0eXBlIDk2Pj4pIE9wZW4gKCkgKD8gPHR5cGUgMTAzICJtaW1lL211bHRpcGFydC5GaWxlIiA8dHlwZSAxMDQgaW50ZXJmYWNlIHsgPyA8dHlwZSA0MT47ID8gPHR5cGUgMTA1ICJpby5SZWFkZXJBdCIgPHR5cGUgMTA2IGludGVyZmFjZSB7IFJlYWRBdCAocCA8dHlwZSAxMDcgW10gPHR5cGUgLTIwPj4sIG9mZiA8dHlwZSAtND4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyA/IDx0eXBlIDEwOCAiaW8uU2Vla2VyIiA8dHlwZSAxMDkgaW50ZXJmYWNlIHsgU2VlayAob2Zmc2V0IDx0eXBlIC00Piwgd2hlbmNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIC00PiwgPyA8dHlwZSAtMTk+KTsgfT4+OyA/IDx0eXBlIDU2PjsgfT4+LCA/IDx0eXBlIC0xOT4pOwo+Pj4+OyB9PgogZnVuYyAoZiA8dHlwZSAxMTAgKjx0eXBlIDg5Pj4pIFJlbW92ZUFsbCAoKSA8dHlwZSAtMTk+Owo+PjsgVHJhaWxlciA8dHlwZSA3Mz47IFJlbW90ZUFkZHIgPHR5cGUgLTE2PjsgUmVxdWVzdFVSSSA8dHlwZSAtMTY+OyBUTFMgPHR5cGUgMTExICo8dHlwZSAxMTIgImNyeXB0by90bHMuQ29ubmVjdGlvblN0YXRlIiAidGxzIiA8dHlwZSAxMTMgc3RydWN0IHsgVmVyc2lvbiA8dHlwZSAtNj47IEhhbmRzaGFrZUNvbXBsZXRlIDx0eXBlIC0xNT47IERpZFJlc3VtZSA8dHlwZSAtMTU+OyBDaXBoZXJTdWl0ZSA8dHlwZSAtNj47IE5lZ290aWF0ZWRQcm90b2NvbCA8dHlwZSAtMTY+OyBOZWdvdGlhdGVkUHJvdG9jb2xJc011dHVhbCA8dHlwZSAtMTU+OyBTZXJ2ZXJOYW1lIDx0eXBlIC0xNj47IFBlZXJDZXJ0aWZpY2F0ZXMgPHR5cGUgMTE0IFtdIDx0eXBlIDExNSAqPHR5cGUgMTE2ICJjcnlwdG8veDUwOS5DZXJ0aWZpY2F0ZSIgIng1MDkiIDx0eXBlIDExNyBzdHJ1Y3QgeyBSYXcgPHR5cGUgMTE4IFtdIDx0eXBlIC0yMD4+OyBSYXdUQlNDZXJ0aWZpY2F0ZSA8dHlwZSAxMTkgW10gPHR5cGUgLTIwPj47IFJhd1N1YmplY3RQdWJsaWNLZXlJbmZvIDx0eXBlIDEyMCBbXSA8dHlwZSAtMjA+PjsgUmF3U3ViamVjdCA8dHlwZSAxMjEgW10gPHR5cGUgLTIwPj47IFJhd0lzc3VlciA8dHlwZSAxMjIgW10gPHR5cGUgLTIwPj47IFNpZ25hdHVyZSA8dHlwZSAxMjMgW10gPHR5cGUgLTIwPj47IFNpZ25hdHVyZUFsZ29yaXRobSA8dHlwZSAxMjQgImNyeXB0by94NTA5LlNpZ25hdHVyZUFsZ29yaXRobSIgPHR5cGUgLTExPj47IFB1YmxpY0tleUFsZ29yaXRobSA8dHlwZSAxMjUgImNyeXB0by94NTA5LlB1YmxpY0tleUFsZ29yaXRobSIgPHR5cGUgLTExPj47IFB1YmxpY0tleSA8dHlwZSAxMjYgaW50ZXJmYWNlIHsgfT47IFZlcnNpb24gPHR5cGUgLTExPjsgU2VyaWFsTnVtYmVyIDx0eXBlIDEyNyAqPHR5cGUgMTI4ICJtYXRoL2JpZy5JbnQiICJiaWciIDx0eXBlIDEyOSBzdHJ1Y3QgeyAubWF0aC9iaWcubmVnIDx0eXBlIC0xNT47IC5tYXRoL2JpZy5hYnMgPHR5cGUgMTMwICIubWF0aC9iaWcubmF0IiA8dHlwZSAxMzEgW10gPHR5cGUgMTMyICJtYXRoL2JpZy5Xb3JkIiA8dHlwZSAtMTM+Pj4KIGZ1bmMgKHogPHR5cGUgMTMwPikgLm1hdGgvYmlnLm11bCAoeCA8dHlwZSAxMzA+LCB5IDx0eXBlIDEzMD4pIDx0eXBlIDEzMD47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDEzMyAiaW8uUnVuZVNjYW5uZXIiIDx0eXBlIDEzNCBpbnRlcmZhY2UgeyA/IDx0eXBlIDEzNSAiaW8uUnVuZVJlYWRlciIgPHR5cGUgMTM2IGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgfT4+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDEzMD4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMTMwPikgLm1hdGgvYmlnLmFkZCAoeCA8dHlwZSAxMzA+LCB5IDx0eXBlIDEzMD4pIDx0eXBlIDEzMD47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5hbmROb3QgKHggPHR5cGUgMTMwPiwgeSA8dHlwZSAxMzA+KSA8dHlwZSAxMzA+OwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcuc2V0Qml0ICh4IDx0eXBlIDEzMD4sIGkgPHR5cGUgLTEyPiwgYiA8dHlwZSAtMTI+KSA8dHlwZSAxMzA+OwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcuc3ViICh4IDx0eXBlIDEzMD4sIHkgPHR5cGUgMTMwPikgPHR5cGUgMTMwPjsKIGZ1bmMgKHggPHR5cGUgMTMwPikgLm1hdGgvYmlnLm1vZFcgKGQgPHR5cGUgMTMyPikgKHIgPHR5cGUgMTMyPik7CiBmdW5jIChuIDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5wcm9iYWJseVByaW1lIChyZXBzIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jIChxIDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5jb252ZXJ0V29yZHMgKHMgPHR5cGUgMTM3IFtdIDx0eXBlIC0yMD4+LCBjaGFyc2V0IDx0eXBlIC0xNj4sIGIgPHR5cGUgMTMyPiwgbmRpZ2l0cyA8dHlwZSAtMTE+LCBiYiA8dHlwZSAxMzI+LCB0YWJsZSA8dHlwZSAxMzggW10gPHR5cGUgMTM5ICIubWF0aC9iaWcuZGl2aXNvciIgPHR5cGUgMTQwIHN0cnVjdCB7IC5tYXRoL2JpZy5iYmIgPHR5cGUgMTMwPjsgLm1hdGgvYmlnLm5iaXRzIDx0eXBlIC0xMT47IC5tYXRoL2JpZy5uZGlnaXRzIDx0eXBlIC0xMT47IH0+Pj4pOwogZnVuYyAoeCA8dHlwZSAxMzA+KSAubWF0aC9iaWcuc3RyaW5nIChjaGFyc2V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5kaXZXICh4IDx0eXBlIDEzMD4sIHkgPHR5cGUgMTMyPikgKHEgPHR5cGUgMTMwPiwgciA8dHlwZSAxMzI+KTsKIGZ1bmMgKHogPHR5cGUgMTMwPikgLm1hdGgvYmlnLnNociAoeCA8dHlwZSAxMzA+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDEzMD47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5tdWxSYW5nZSAoYSA8dHlwZSAtOD4sIGIgPHR5cGUgLTg+KSA8dHlwZSAxMzA+OwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcubXVsQWRkV1cgKHggPHR5cGUgMTMwPiwgeSA8dHlwZSAxMzI+LCByIDx0eXBlIDEzMj4pIDx0eXBlIDEzMD47CiBmdW5jICh4IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5kZWNpbWFsU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5hbmQgKHggPHR5cGUgMTMwPiwgeSA8dHlwZSAxMzA+KSA8dHlwZSAxMzA+OwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcuYml0IChpIDx0eXBlIC0xMj4pIDx0eXBlIC0xMj47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy54b3IgKHggPHR5cGUgMTMwPiwgeSA8dHlwZSAxMzA+KSA8dHlwZSAxMzA+OwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcuc2V0ICh4IDx0eXBlIDEzMD4pIDx0eXBlIDEzMD47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5yYW5kb20gKHJhbmQgPHR5cGUgMTQxICo8dHlwZSAxNDIgIm1hdGgvcmFuZC5SYW5kIiAicmFuZCIgPHR5cGUgMTQzIHN0cnVjdCB7IC5tYXRoL3JhbmQuc3JjIDx0eXBlIDE0NCAibWF0aC9yYW5kLlNvdXJjZSIgPHR5cGUgMTQ1IGludGVyZmFjZSB7IEludDYzICgpIDx0eXBlIC00PjsgU2VlZCAoc2VlZCA8dHlwZSAtND4pOyB9Pj47IH0+CiBmdW5jIChyIDx0eXBlIDE0NiAqPHR5cGUgMTQyPj4pIEV4cEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMTQ2PikgSW50MzFuIChuIDx0eXBlIC0zPikgPHR5cGUgLTM+OwogZnVuYyAociA8dHlwZSAxNDY+KSBVaW50MzIgKCkgPHR5cGUgLTc+OwogZnVuYyAociA8dHlwZSAxNDY+KSBJbnRuIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDE0Nj4pIFBlcm0gKG4gPHR5cGUgLTExPikgPHR5cGUgMTQ3IFtdIDx0eXBlIC0xMT4+OwogZnVuYyAociA8dHlwZSAxNDY+KSBOb3JtRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAxNDY+KSBJbnQzMSAoKSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDE0Nj4pIEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMTQ2PikgU2VlZCAoc2VlZCA8dHlwZSAtND4pOwogZnVuYyAociA8dHlwZSAxNDY+KSBJbnQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgMTQ2PikgSW50NjMgKCkgPHR5cGUgLTQ+OwogZnVuYyAociA8dHlwZSAxNDY+KSBJbnQ2M24gKG4gPHR5cGUgLTQ+KSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDE0Nj4pIEZsb2F0MzIgKCkgPHR5cGUgLTk+Owo+PiwgbGltaXQgPHR5cGUgMTMwPiwgbiA8dHlwZSAtMTE+KSA8dHlwZSAxMzA+OwogZnVuYyAoeCA8dHlwZSAxMzA+KSAubWF0aC9iaWcuY21wICh5IDx0eXBlIDEzMD4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcub3IgKHggPHR5cGUgMTMwPiwgeSA8dHlwZSAxMzA+KSA8dHlwZSAxMzA+OwogZnVuYyAoeCA8dHlwZSAxMzA+KSAubWF0aC9iaWcuYml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5zZXRXb3JkICh4IDx0eXBlIDEzMj4pIDx0eXBlIDEzMD47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5zZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSAxMzA+OwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcuZGl2ICh6MiA8dHlwZSAxMzA+LCB1IDx0eXBlIDEzMD4sIHYgPHR5cGUgMTMwPikgKHEgPHR5cGUgMTMwPiwgciA8dHlwZSAxMzA+KTsKIGZ1bmMgKHggPHR5cGUgMTMwPikgLm1hdGgvYmlnLnRyYWlsaW5nWmVyb0JpdHMgKCkgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgMTMwPikgLm1hdGgvYmlnLmV4cE5OV2luZG93ZWQgKHggPHR5cGUgMTMwPiwgeSA8dHlwZSAxMzA+LCBtIDx0eXBlIDEzMD4pIDx0eXBlIDEzMD47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5kaXZMYXJnZSAodSA8dHlwZSAxMzA+LCB1SW4gPHR5cGUgMTMwPiwgdiA8dHlwZSAxMzA+KSAocSA8dHlwZSAxMzA+LCByIDx0eXBlIDEzMD4pOwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcubm9ybSAoKSA8dHlwZSAxMzA+OwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcuc2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAxNDggW10gPHR5cGUgLTIwPj4pIDx0eXBlIDEzMD47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5tYWtlIChuIDx0eXBlIC0xMT4pIDx0eXBlIDEzMD47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5zaGwgKHggPHR5cGUgMTMwPiwgcyA8dHlwZSAtMTI+KSA8dHlwZSAxMzA+OwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcuYnl0ZXMgKGJ1ZiA8dHlwZSAxNDkgW10gPHR5cGUgLTIwPj4pIChpIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAxMzA+KSAubWF0aC9iaWcuY2xlYXIgKCk7CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5leHBXVyAoeCA8dHlwZSAxMzI+LCB5IDx0eXBlIDEzMj4pIDx0eXBlIDEzMD47CiBmdW5jICh6IDx0eXBlIDEzMD4pIC5tYXRoL2JpZy5leHBOTiAoeCA8dHlwZSAxMzA+LCB5IDx0eXBlIDEzMD4sIG0gPHR5cGUgMTMwPikgPHR5cGUgMTMwPjsKPjsgfT4KIGZ1bmMgKHogPHR5cGUgMTUwICo8dHlwZSAxMjg+PikgTmVnICh4IDx0eXBlIDE1MD4pIDx0eXBlIDE1MD47CiBmdW5jICh6IDx0eXBlIDE1MD4pIFF1b1JlbSAoeCA8dHlwZSAxNTA+LCB5IDx0eXBlIDE1MD4sIHIgPHR5cGUgMTUwPikgKD8gPHR5cGUgMTUwPiwgPyA8dHlwZSAxNTA+KTsKIGZ1bmMgKHggPHR5cGUgMTUwPikgQnl0ZXMgKCkgPHR5cGUgMTUxIFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBTZXRCaXRzIChhYnMgPHR5cGUgMTUyIFtdIDx0eXBlIDEzMj4+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBTZXRCaXQgKHggPHR5cGUgMTUwPiwgaSA8dHlwZSAtMTE+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDE1MD47CiBmdW5jICh6IDx0eXBlIDE1MD4pIFhvciAoeCA8dHlwZSAxNTA+LCB5IDx0eXBlIDE1MD4pIDx0eXBlIDE1MD47CiBmdW5jICh6IDx0eXBlIDE1MD4pIFNldEludDY0ICh4IDx0eXBlIC00PikgPHR5cGUgMTUwPjsKIGZ1bmMgKHogPHR5cGUgMTUwPikgTm90ICh4IDx0eXBlIDE1MD4pIDx0eXBlIDE1MD47CiBmdW5jICh6IDx0eXBlIDE1MD4pIFVubWFyc2hhbEpTT04gKHRleHQgPHR5cGUgMTUzIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBPciAoeCA8dHlwZSAxNTA+LCB5IDx0eXBlIDE1MD4pIDx0eXBlIDE1MD47CiBmdW5jICh6IDx0eXBlIDE1MD4pIFNldFVpbnQ2NCAoeCA8dHlwZSAtOD4pIDx0eXBlIDE1MD47CiBmdW5jICh4IDx0eXBlIDE1MD4pIEludDY0ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHogPHR5cGUgMTUwPikgLm1hdGgvYmlnLnNjYW4gKHIgPHR5cGUgMTMzPiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAxNTA+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDE1MD4pIEdDRCAoeCA8dHlwZSAxNTA+LCB5IDx0eXBlIDE1MD4sIGEgPHR5cGUgMTUwPiwgYiA8dHlwZSAxNTA+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBSZW0gKHggPHR5cGUgMTUwPiwgeSA8dHlwZSAxNTA+KSA8dHlwZSAxNTA+OwogZnVuYyAoeCA8dHlwZSAxNTA+KSBCaXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHggPHR5cGUgMTUwPikgQml0cyAoKSA8dHlwZSAxNTQgW10gPHR5cGUgMTMyPj47CiBmdW5jICh6IDx0eXBlIDE1MD4pIFNldEJ5dGVzIChidWYgPHR5cGUgMTU1IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBEaXZNb2QgKHggPHR5cGUgMTUwPiwgeSA8dHlwZSAxNTA+LCBtIDx0eXBlIDE1MD4pICg/IDx0eXBlIDE1MD4sID8gPHR5cGUgMTUwPik7CiBmdW5jICh6IDx0eXBlIDE1MD4pIFJzaCAoeCA8dHlwZSAxNTA+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDE1MD47CiBmdW5jICh4IDx0eXBlIDE1MD4pIENtcCAoeSA8dHlwZSAxNTA+KSAociA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgMTUwPikgU2NhbiAocyA8dHlwZSAxNTYgImZtdC5TY2FuU3RhdGUiIDx0eXBlIDE1NyBpbnRlcmZhY2UgeyBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyBTa2lwU3BhY2UgKCk7IFRva2VuIChza2lwU3BhY2UgPHR5cGUgLTE1PiwgZiA8dHlwZSAxNTggKD8gPHR5cGUgLTIxPikgPHR5cGUgLTE1Pj4pICh0b2tlbiA8dHlwZSAxNTkgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsgV2lkdGggKCkgKHdpZCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgUmVhZCAoYnVmIDx0eXBlIDE2MCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4sIGNoIDx0eXBlIC0yMT4pIDx0eXBlIC0xOT47CiBmdW5jICh4IDx0eXBlIDE1MD4pIEdvYkVuY29kZSAoKSAoPyA8dHlwZSAxNjEgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh4IDx0eXBlIDE1MD4pIFByb2JhYmx5UHJpbWUgKG4gPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHggPHR5cGUgMTUwPikgU2lnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBNb2QgKHggPHR5cGUgMTUwPiwgeSA8dHlwZSAxNTA+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBFeHAgKHggPHR5cGUgMTUwPiwgeSA8dHlwZSAxNTA+LCBtIDx0eXBlIDE1MD4pIDx0eXBlIDE1MD47CiBmdW5jICh4IDx0eXBlIDE1MD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBBYnMgKHggPHR5cGUgMTUwPikgPHR5cGUgMTUwPjsKIGZ1bmMgKHogPHR5cGUgMTUwPikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSAxNjIgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDE1MD4pIFJhbmQgKHJuZCA8dHlwZSAxNDE+LCBuIDx0eXBlIDE1MD4pIDx0eXBlIDE1MD47CiBmdW5jICh6IDx0eXBlIDE1MD4pIEFuZCAoeCA8dHlwZSAxNTA+LCB5IDx0eXBlIDE1MD4pIDx0eXBlIDE1MD47CiBmdW5jICh6IDx0eXBlIDE1MD4pIE1vZEludmVyc2UgKGcgPHR5cGUgMTUwPiwgbiA8dHlwZSAxNTA+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBRdW8gKHggPHR5cGUgMTUwPiwgeSA8dHlwZSAxNTA+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBBZGQgKHggPHR5cGUgMTUwPiwgeSA8dHlwZSAxNTA+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBMc2ggKHggPHR5cGUgMTUwPiwgbiA8dHlwZSAtMTI+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBBbmROb3QgKHggPHR5cGUgMTUwPiwgeSA8dHlwZSAxNTA+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBTZXQgKHggPHR5cGUgMTUwPikgPHR5cGUgMTUwPjsKIGZ1bmMgKHogPHR5cGUgMTUwPikgTXVsICh4IDx0eXBlIDE1MD4sIHkgPHR5cGUgMTUwPikgPHR5cGUgMTUwPjsKIGZ1bmMgKHogPHR5cGUgMTUwPikgTWFyc2hhbFRleHQgKCkgKHRleHQgPHR5cGUgMTYzIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDE1MD4pIERpdiAoeCA8dHlwZSAxNTA+LCB5IDx0eXBlIDE1MD4pIDx0eXBlIDE1MD47CiBmdW5jICh6IDx0eXBlIDE1MD4pIEJpbm9taWFsIChuIDx0eXBlIC00PiwgayA8dHlwZSAtND4pIDx0eXBlIDE1MD47CiBmdW5jICh4IDx0eXBlIDE1MD4pIEZvcm1hdCAocyA8dHlwZSAxNjQgImZtdC5TdGF0ZSIgPHR5cGUgMTY1IGludGVyZmFjZSB7IFdyaXRlIChiIDx0eXBlIDE2NiBbXSA8dHlwZSAtMjA+PikgKHJldCA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFdpZHRoICgpICh3aWQgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IFByZWNpc2lvbiAoKSAocHJlYyA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgRmxhZyAoYyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OyB9Pj4sIGNoIDx0eXBlIC0yMT4pOwogZnVuYyAoeiA8dHlwZSAxNTA+KSBNdWxSYW5nZSAoYSA8dHlwZSAtND4sIGIgPHR5cGUgLTQ+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBTZXRTdHJpbmcgKHMgPHR5cGUgLTE2PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAxNTA+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAoeCA8dHlwZSAxNTA+KSBVaW50NjQgKCkgPHR5cGUgLTg+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBNYXJzaGFsSlNPTiAoKSAoPyA8dHlwZSAxNjcgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh4IDx0eXBlIDE1MD4pIEJpdExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBHb2JEZWNvZGUgKGJ1ZiA8dHlwZSAxNjggW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDE1MD4pIC5tYXRoL2JpZy5iaW5hcnlHQ0QgKGEgPHR5cGUgMTUwPiwgYiA8dHlwZSAxNTA+KSA8dHlwZSAxNTA+OwogZnVuYyAoeiA8dHlwZSAxNTA+KSBTdWIgKHggPHR5cGUgMTUwPiwgeSA8dHlwZSAxNTA+KSA8dHlwZSAxNTA+Owo+PjsgSXNzdWVyIDx0eXBlIDE2OSAiY3J5cHRvL3g1MDkvcGtpeC5OYW1lIiAicGtpeCIgPHR5cGUgMTcwIHN0cnVjdCB7IENvdW50cnkgPHR5cGUgMTcxIFtdIDx0eXBlIC0xNj4+OyBPcmdhbml6YXRpb24gPHR5cGUgMTcxPjsgT3JnYW5pemF0aW9uYWxVbml0IDx0eXBlIDE3MT47IExvY2FsaXR5IDx0eXBlIDE3MiBbXSA8dHlwZSAtMTY+PjsgUHJvdmluY2UgPHR5cGUgMTcyPjsgU3RyZWV0QWRkcmVzcyA8dHlwZSAxNzMgW10gPHR5cGUgLTE2Pj47IFBvc3RhbENvZGUgPHR5cGUgMTczPjsgU2VyaWFsTnVtYmVyIDx0eXBlIC0xNj47IENvbW1vbk5hbWUgPHR5cGUgLTE2PjsgTmFtZXMgPHR5cGUgMTc0IFtdIDx0eXBlIDE3NSAiY3J5cHRvL3g1MDkvcGtpeC5BdHRyaWJ1dGVUeXBlQW5kVmFsdWUiIDx0eXBlIDE3NiBzdHJ1Y3QgeyBUeXBlIDx0eXBlIDE3NyAiZW5jb2RpbmcvYXNuMS5PYmplY3RJZGVudGlmaWVyIiAiYXNuMSIgPHR5cGUgMTc4IFtdIDx0eXBlIC0xMT4+CiBmdW5jIChvaSA8dHlwZSAxNzc+KSBFcXVhbCAob3RoZXIgPHR5cGUgMTc3PikgPHR5cGUgLTE1PjsKIGZ1bmMgKG9pIDx0eXBlIDE3Nz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBWYWx1ZSA8dHlwZSAxNzkgaW50ZXJmYWNlIHsgfT47IH0+Pj47IH0+CiBmdW5jIChuIDx0eXBlIDE2OT4pIFRvUkROU2VxdWVuY2UgKCkgKHJldCA8dHlwZSAxODAgImNyeXB0by94NTA5L3BraXguUkROU2VxdWVuY2UiIDx0eXBlIDE4MSBbXSA8dHlwZSAxODIgImNyeXB0by94NTA5L3BraXguUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZVNFVCIgPHR5cGUgMTgzIFtdIDx0eXBlIDE3NT4+Pj4+KTsKIGZ1bmMgKG4gPHR5cGUgMTg0ICo8dHlwZSAxNjk+PikgRmlsbEZyb21SRE5TZXF1ZW5jZSAocmRucyA8dHlwZSAxODUgKjx0eXBlIDE4MD4+KTsKPjsgU3ViamVjdCA8dHlwZSAxNjk+OyBOb3RCZWZvcmUgPHR5cGUgMTI+OyBOb3RBZnRlciA8dHlwZSAxMj47IEtleVVzYWdlIDx0eXBlIDE4NiAiY3J5cHRvL3g1MDkuS2V5VXNhZ2UiIDx0eXBlIC0xMT4+OyBFeHRlbnNpb25zIDx0eXBlIDE4NyBbXSA8dHlwZSAxODggImNyeXB0by94NTA5L3BraXguRXh0ZW5zaW9uIiA8dHlwZSAxODkgc3RydWN0IHsgSWQgPHR5cGUgMTc3PjsgQ3JpdGljYWwgPHR5cGUgLTE1PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBWYWx1ZSA8dHlwZSAxOTAgW10gPHR5cGUgLTIwPj47IH0+Pj47IEV4dHJhRXh0ZW5zaW9ucyA8dHlwZSAxOTEgW10gPHR5cGUgMTg4Pj47IEV4dEtleVVzYWdlIDx0eXBlIDE5MiBbXSA8dHlwZSAxOTMgImNyeXB0by94NTA5LkV4dEtleVVzYWdlIiA8dHlwZSAtMTE+Pj47IFVua25vd25FeHRLZXlVc2FnZSA8dHlwZSAxOTQgW10gPHR5cGUgMTc3Pj47IEJhc2ljQ29uc3RyYWludHNWYWxpZCA8dHlwZSAtMTU+OyBJc0NBIDx0eXBlIC0xNT47IE1heFBhdGhMZW4gPHR5cGUgLTExPjsgTWF4UGF0aExlblplcm8gPHR5cGUgLTE1PjsgU3ViamVjdEtleUlkIDx0eXBlIDE5NSBbXSA8dHlwZSAtMjA+PjsgQXV0aG9yaXR5S2V5SWQgPHR5cGUgMTk2IFtdIDx0eXBlIC0yMD4+OyBPQ1NQU2VydmVyIDx0eXBlIDE5NyBbXSA8dHlwZSAtMTY+PjsgSXNzdWluZ0NlcnRpZmljYXRlVVJMIDx0eXBlIDE5OCBbXSA8dHlwZSAtMTY+PjsgRE5TTmFtZXMgPHR5cGUgMTk5IFtdIDx0eXBlIC0xNj4+OyBFbWFpbEFkZHJlc3NlcyA8dHlwZSAyMDAgW10gPHR5cGUgLTE2Pj47IElQQWRkcmVzc2VzIDx0eXBlIDIwMSBbXSA8dHlwZSAyMDIgIm5ldC5JUCIgPHR5cGUgMjAzIFtdIDx0eXBlIC0yMD4+CiBmdW5jIChpcCA8dHlwZSAyMDI+KSBNYXJzaGFsVGV4dCAoKSAoPyA8dHlwZSAyMDQgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChpcCA8dHlwZSAyMDI+KSBJc0xpbmtMb2NhbE11bHRpY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjAyPikgSXNNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDIwMj4pIFRvNCAoKSA8dHlwZSAyMDI+OwogZnVuYyAoaXAgPHR5cGUgMjA1ICo8dHlwZSAyMDI+PikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSAyMDYgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jIChpcCA8dHlwZSAyMDI+KSBUbzE2ICgpIDx0eXBlIDIwMj47CiBmdW5jIChpcCA8dHlwZSAyMDI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGlwIDx0eXBlIDIwMj4pIElzTGlua0xvY2FsVW5pY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjAyPikgSXNMb29wYmFjayAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjAyPikgRXF1YWwgKHggPHR5cGUgMjAyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDIwMj4pIERlZmF1bHRNYXNrICgpIDx0eXBlIDIwNyAibmV0LklQTWFzayIgPHR5cGUgMjA4IFtdIDx0eXBlIC0yMD4+CiBmdW5jIChtIDx0eXBlIDIwNz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobSA8dHlwZSAyMDc+KSBTaXplICgpIChvbmVzIDx0eXBlIC0xMT4sIGJpdHMgPHR5cGUgLTExPik7Cj47CiBmdW5jIChpcCA8dHlwZSAyMDI+KSBNYXNrIChtYXNrIDx0eXBlIDIwNz4pIDx0eXBlIDIwMj47CiBmdW5jIChpcCA8dHlwZSAyMDI+KSBJc1Vuc3BlY2lmaWVkICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAyMDI+KSBJc0ludGVyZmFjZUxvY2FsTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAyMDI+KSBJc0dsb2JhbFVuaWNhc3QgKCkgPHR5cGUgLTE1PjsKPj47IFBlcm1pdHRlZEROU0RvbWFpbnNDcml0aWNhbCA8dHlwZSAtMTU+OyBQZXJtaXR0ZWRETlNEb21haW5zIDx0eXBlIDIwOSBbXSA8dHlwZSAtMTY+PjsgQ1JMRGlzdHJpYnV0aW9uUG9pbnRzIDx0eXBlIDIxMCBbXSA8dHlwZSAtMTY+PjsgUG9saWN5SWRlbnRpZmllcnMgPHR5cGUgMjExIFtdIDx0eXBlIDE3Nz4+OyB9PgogZnVuYyAoYyA8dHlwZSAyMTIgKjx0eXBlIDExNj4+KSBDaGVja1NpZ25hdHVyZSAoYWxnbyA8dHlwZSAxMjQ+LCBzaWduZWQgPHR5cGUgMjEzIFtdIDx0eXBlIC0yMD4+LCBzaWduYXR1cmUgPHR5cGUgMjEzPikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjEyPikgLmNyeXB0by94NTA5LnN5c3RlbVZlcmlmeSAob3B0cyA8dHlwZSAyMTQgKjx0eXBlIDIxNSAiY3J5cHRvL3g1MDkuVmVyaWZ5T3B0aW9ucyIgPHR5cGUgMjE2IHN0cnVjdCB7IEROU05hbWUgPHR5cGUgLTE2PjsgSW50ZXJtZWRpYXRlcyA8dHlwZSAyMTcgKjx0eXBlIDIxOCAiY3J5cHRvL3g1MDkuQ2VydFBvb2wiIDx0eXBlIDIxOSBzdHJ1Y3QgeyAuY3J5cHRvL3g1MDkuYnlTdWJqZWN0S2V5SWQgPHR5cGUgMjIwIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMjIxIFtdIDx0eXBlIC0xMT4+PjsgLmNyeXB0by94NTA5LmJ5TmFtZSA8dHlwZSAyMjIgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAyMjMgW10gPHR5cGUgLTExPj4+OyAuY3J5cHRvL3g1MDkuY2VydHMgPHR5cGUgMjI0IFtdIDx0eXBlIDIxMj4+OyB9PgogZnVuYyAocyA8dHlwZSAyMjUgKjx0eXBlIDIxOD4+KSBBcHBlbmRDZXJ0c0Zyb21QRU0gKHBlbUNlcnRzIDx0eXBlIDIyNiBbXSA8dHlwZSAtMjA+PikgKG9rIDx0eXBlIC0xNT4pOwogZnVuYyAocyA8dHlwZSAyMjU+KSBTdWJqZWN0cyAoKSAocmVzIDx0eXBlIDIyNyBbXSA8dHlwZSAyMjggW10gPHR5cGUgLTIwPj4+KTsKIGZ1bmMgKHMgPHR5cGUgMjI1PikgQWRkQ2VydCAoY2VydCA8dHlwZSAyMTI+KTsKIGZ1bmMgKHMgPHR5cGUgMjI1PikgLmNyeXB0by94NTA5LmZpbmRWZXJpZmllZFBhcmVudHMgKGNlcnQgPHR5cGUgMjEyPikgKHBhcmVudHMgPHR5cGUgMjI5IFtdIDx0eXBlIC0xMT4+LCBlcnJDZXJ0IDx0eXBlIDIxMj4sIGVyciA8dHlwZSAtMTk+KTsKPj47IFJvb3RzIDx0eXBlIDIxNz47IEN1cnJlbnRUaW1lIDx0eXBlIDEyPjsgS2V5VXNhZ2VzIDx0eXBlIDIzMCBbXSA8dHlwZSAxOTM+PjsgfT4+PikgKGNoYWlucyA8dHlwZSAyMzEgW10gPHR5cGUgMjMyIFtdIDx0eXBlIDIxMj4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMTI+KSBDaGVja1NpZ25hdHVyZUZyb20gKHBhcmVudCA8dHlwZSAyMTI+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMTI+KSBFcXVhbCAob3RoZXIgPHR5cGUgMjEyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKGMgPHR5cGUgMjEyPikgVmVyaWZ5IChvcHRzIDx0eXBlIDIxNT4pIChjaGFpbnMgPHR5cGUgMjMzIFtdIDx0eXBlIDIzNCBbXSA8dHlwZSAyMTI+Pj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjEyPikgVmVyaWZ5SG9zdG5hbWUgKGggPHR5cGUgLTE2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjEyPikgLmNyeXB0by94NTA5LmlzVmFsaWQgKGNlcnRUeXBlIDx0eXBlIC0xMT4sIGN1cnJlbnRDaGFpbiA8dHlwZSAyMzUgW10gPHR5cGUgMjEyPj4sIG9wdHMgPHR5cGUgMjE0PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjEyPikgQ2hlY2tDUkxTaWduYXR1cmUgKGNybCA8dHlwZSAyMzYgKjx0eXBlIDIzNyAiY3J5cHRvL3g1MDkvcGtpeC5DZXJ0aWZpY2F0ZUxpc3QiIDx0eXBlIDIzOCBzdHJ1Y3QgeyBUQlNDZXJ0TGlzdCA8dHlwZSAyMzkgImNyeXB0by94NTA5L3BraXguVEJTQ2VydGlmaWNhdGVMaXN0IiA8dHlwZSAyNDAgc3RydWN0IHsgUmF3IDx0eXBlIDI0MSAiZW5jb2RpbmcvYXNuMS5SYXdDb250ZW50IiA8dHlwZSAyNDIgW10gPHR5cGUgLTIwPj4+OyBWZXJzaW9uIDx0eXBlIC0xMT4gImFzbjE6XCJvcHRpb25hbCxkZWZhdWx0OjJcIiI7IFNpZ25hdHVyZSA8dHlwZSAyNDMgImNyeXB0by94NTA5L3BraXguQWxnb3JpdGhtSWRlbnRpZmllciIgPHR5cGUgMjQ0IHN0cnVjdCB7IEFsZ29yaXRobSA8dHlwZSAxNzc+OyBQYXJhbWV0ZXJzIDx0eXBlIDI0NSAiZW5jb2RpbmcvYXNuMS5SYXdWYWx1ZSIgPHR5cGUgMjQ2IHN0cnVjdCB7IENsYXNzIDx0eXBlIC0xMT47IFRhZyA8dHlwZSAtMTE+OyBJc0NvbXBvdW5kIDx0eXBlIC0xNT47IEJ5dGVzIDx0eXBlIDI0NyBbXSA8dHlwZSAtMjA+PjsgRnVsbEJ5dGVzIDx0eXBlIDI0OCBbXSA8dHlwZSAtMjA+PjsgfT4+ICJhc24xOlwib3B0aW9uYWxcIiI7IH0+PjsgSXNzdWVyIDx0eXBlIDE4MD47IFRoaXNVcGRhdGUgPHR5cGUgMTI+OyBOZXh0VXBkYXRlIDx0eXBlIDEyPiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBSZXZva2VkQ2VydGlmaWNhdGVzIDx0eXBlIDI0OSBbXSA8dHlwZSAyNTAgImNyeXB0by94NTA5L3BraXguUmV2b2tlZENlcnRpZmljYXRlIiA8dHlwZSAyNTEgc3RydWN0IHsgU2VyaWFsTnVtYmVyIDx0eXBlIDEyNz47IFJldm9jYXRpb25UaW1lIDx0eXBlIDEyPjsgRXh0ZW5zaW9ucyA8dHlwZSAyNTIgW10gPHR5cGUgMTg4Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBFeHRlbnNpb25zIDx0eXBlIDI1MyBbXSA8dHlwZSAxODg+PiAiYXNuMTpcInRhZzowLG9wdGlvbmFsLGV4cGxpY2l0XCIiOyB9Pj47IFNpZ25hdHVyZUFsZ29yaXRobSA8dHlwZSAyNDM+OyBTaWduYXR1cmVWYWx1ZSA8dHlwZSAyNTQgImVuY29kaW5nL2FzbjEuQml0U3RyaW5nIiA8dHlwZSAyNTUgc3RydWN0IHsgQnl0ZXMgPHR5cGUgMjU2IFtdIDx0eXBlIC0yMD4+OyBCaXRMZW5ndGggPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGIgPHR5cGUgMjU0PikgQXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMjU0PikgUmlnaHRBbGlnbiAoKSA8dHlwZSAyNTcgW10gPHR5cGUgLTIwPj47Cj47IH0+CiBmdW5jIChjZXJ0TGlzdCA8dHlwZSAyNTggKjx0eXBlIDIzNz4+KSBIYXNFeHBpcmVkIChub3cgPHR5cGUgMTI+KSA8dHlwZSAtMTU+Owo+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjEyPikgLmNyeXB0by94NTA5LmJ1aWxkQ2hhaW5zIChjYWNoZSA8dHlwZSAyNTkgbWFwIFs8dHlwZSAtMTE+XSA8dHlwZSAyNjAgW10gPHR5cGUgMjYxIFtdIDx0eXBlIDIxMj4+Pj4sIGN1cnJlbnRDaGFpbiA8dHlwZSAyNjIgW10gPHR5cGUgMjEyPj4sIG9wdHMgPHR5cGUgMjE0PikgKGNoYWlucyA8dHlwZSAyNjMgW10gPHR5cGUgMjY0IFtdIDx0eXBlIDIxMj4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMTI+KSBDcmVhdGVDUkwgKHJhbmQgPHR5cGUgNDE+LCBwcml2IDx0eXBlIDI2NSBpbnRlcmZhY2UgeyB9PiwgcmV2b2tlZENlcnRzIDx0eXBlIDI2NiBbXSA8dHlwZSAyNTA+Piwgbm93IDx0eXBlIDEyPiwgZXhwaXJ5IDx0eXBlIDEyPikgKGNybEJ5dGVzIDx0eXBlIDI2NyBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwo+Pj47IFZlcmlmaWVkQ2hhaW5zIDx0eXBlIDI2OCBbXSA8dHlwZSAyNjkgW10gPHR5cGUgMTE1Pj4+OyBUTFNVbmlxdWUgPHR5cGUgMjcwIFtdIDx0eXBlIC0yMD4+OyB9Pj4+OyB9PgogZnVuYyAociA8dHlwZSAyNzEgKjx0eXBlIDYwPj4pIC5uZXQvaHR0cC5leHBlY3RzQ29udGludWUgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMjcxPikgUmVmZXJlciAoKSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNzE+KSBQcm90b0F0TGVhc3QgKG1ham9yIDx0eXBlIC0xMT4sIG1pbm9yIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDI3MT4pIC5uZXQvaHR0cC5tdWx0aXBhcnRSZWFkZXIgKCkgKD8gPHR5cGUgMjcyICo8dHlwZSAyNzMgIm1pbWUvbXVsdGlwYXJ0LlJlYWRlciIgPHR5cGUgMjc0IHN0cnVjdCB7IC5taW1lL211bHRpcGFydC5idWZSZWFkZXIgPHR5cGUgMzc+OyAubWltZS9tdWx0aXBhcnQuY3VycmVudFBhcnQgPHR5cGUgMjc1ICo8dHlwZSAyNzYgIm1pbWUvbXVsdGlwYXJ0LlBhcnQiIDx0eXBlIDI3NyBzdHJ1Y3QgeyBIZWFkZXIgPHR5cGUgOTg+OyAubWltZS9tdWx0aXBhcnQuYnVmZmVyIDx0eXBlIDI3OCAqPHR5cGUgMjc5ICJieXRlcy5CdWZmZXIiIDx0eXBlIDI4MCBzdHJ1Y3QgeyAuYnl0ZXMuYnVmIDx0eXBlIDI4MSBbXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLm9mZiA8dHlwZSAtMTE+OyAuYnl0ZXMucnVuZUJ5dGVzIDx0eXBlIDI4MiBbNCBdIDx0eXBlIC0yMD4+OyAuYnl0ZXMuYm9vdHN0cmFwIDx0eXBlIDI4MyBbNjQgXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLmxhc3RSZWFkIDx0eXBlIDI4NCAiLmJ5dGVzLnJlYWRPcCIgPHR5cGUgLTExPj47IH0+CiBmdW5jIChiIDx0eXBlIDI4NSAqPHR5cGUgMjc5Pj4pIFVucmVhZEJ5dGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgVHJ1bmNhdGUgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDI4NT4pIFdyaXRlU3RyaW5nIChzIDx0eXBlIC0xNj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgUmVhZFN0cmluZyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODU+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4NT4pIE5leHQgKG4gPHR5cGUgLTExPikgPHR5cGUgMjg2IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoYiA8dHlwZSAyODU+KSBXcml0ZVJ1bmUgKHIgPHR5cGUgLTIxPikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODU+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgV3JpdGVUbyAodyA8dHlwZSA0NT4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODU+KSBSZWFkQnl0ZXMgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDI4NyBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODU+KSAuYnl0ZXMuZ3JvdyAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAyODU+KSBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAyODU+KSBSZWFkIChwIDx0eXBlIDI4OCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODU+KSBSZXNldCAoKTsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgLmJ5dGVzLnJlYWRTbGljZSAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMjg5IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4NT4pIFdyaXRlQnl0ZSAoYyA8dHlwZSAtMjA+KSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAyODU+KSBXcml0ZSAocCA8dHlwZSAyOTAgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgUmVhZEZyb20gKHIgPHR5cGUgNDE+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgTGVuICgpIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDI4NT4pIEdyb3cgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDI4NT4pIEJ5dGVzICgpIDx0eXBlIDI5MSBbXSA8dHlwZSAtMjA+PjsKPj47IC5taW1lL211bHRpcGFydC5tciA8dHlwZSAyOTIgKjx0eXBlIDI3Mz4+OyAubWltZS9tdWx0aXBhcnQuYnl0ZXNSZWFkIDx0eXBlIC0xMT47IC5taW1lL211bHRpcGFydC5kaXNwb3NpdGlvbiA8dHlwZSAtMTY+OyAubWltZS9tdWx0aXBhcnQuZGlzcG9zaXRpb25QYXJhbXMgPHR5cGUgMjkzIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE2Pj47IC5taW1lL211bHRpcGFydC5yIDx0eXBlIDQxPjsgfT4KIGZ1bmMgKHAgPHR5cGUgMjk0ICo8dHlwZSAyNzY+PikgRmlsZU5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHAgPHR5cGUgMjk0PikgLm1pbWUvbXVsdGlwYXJ0LnBhcnNlQ29udGVudERpc3Bvc2l0aW9uICgpOwogZnVuYyAocCA8dHlwZSAyOTQ+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYnAgPHR5cGUgMjk0PikgLm1pbWUvbXVsdGlwYXJ0LnBvcHVsYXRlSGVhZGVycyAoKSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSAyOTQ+KSBSZWFkIChkIDx0eXBlIDI5NSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAocCA8dHlwZSAyOTQ+KSBGb3JtTmFtZSAoKSA8dHlwZSAtMTY+Owo+PjsgLm1pbWUvbXVsdGlwYXJ0LnBhcnRzUmVhZCA8dHlwZSAtMTE+OyAubWltZS9tdWx0aXBhcnQubmwgPHR5cGUgMjk2IFtdIDx0eXBlIC0yMD4+OyAubWltZS9tdWx0aXBhcnQubmxEYXNoQm91bmRhcnkgPHR5cGUgMjk3IFtdIDx0eXBlIC0yMD4+OyAubWltZS9tdWx0aXBhcnQuZGFzaEJvdW5kYXJ5RGFzaCA8dHlwZSAyOTggW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5kYXNoQm91bmRhcnkgPHR5cGUgMjk5IFtdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAobXIgPHR5cGUgMzAwICo8dHlwZSAyNzM+PikgLm1pbWUvbXVsdGlwYXJ0LnBlZWtCdWZmZXJJc0VtcHR5UGFydCAocGVlayA8dHlwZSAzMDEgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDMwMD4pIFJlYWRGb3JtIChtYXhNZW1vcnkgPHR5cGUgLTQ+KSAoZiA8dHlwZSA4OD4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKG1yIDx0eXBlIDMwMD4pIC5taW1lL211bHRpcGFydC5pc0JvdW5kYXJ5RGVsaW1pdGVyTGluZSAobGluZSA8dHlwZSAzMDIgW10gPHR5cGUgLTIwPj4pIChyZXQgPHR5cGUgLTE1Pik7CiBmdW5jIChyIDx0eXBlIDMwMD4pIE5leHRQYXJ0ICgpICg/IDx0eXBlIDI3NT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChtciA8dHlwZSAzMDA+KSAubWltZS9tdWx0aXBhcnQuaXNGaW5hbEJvdW5kYXJ5IChsaW5lIDx0eXBlIDMwMyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI3MT4pIC5uZXQvaHR0cC53YW50c0h0dHAxMEtlZXBBbGl2ZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNzE+KSBQYXJzZU11bHRpcGFydEZvcm0gKG1heE1lbW9yeSA8dHlwZSAtND4pIDx0eXBlIC0xOT47CiBmdW5jIChyIDx0eXBlIDI3MT4pIFVzZXJBZ2VudCAoKSA8dHlwZSAtMTY+OwogZnVuYyAocmVxIDx0eXBlIDI3MT4pIC5uZXQvaHR0cC53cml0ZSAodyA8dHlwZSA0NT4sIHVzaW5nUHJveHkgPHR5cGUgLTE1PiwgZXh0cmFIZWFkZXJzIDx0eXBlIDczPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjcxPikgQ29va2llcyAoKSA8dHlwZSAzMDQgW10gPHR5cGUgMzA1ICo8dHlwZSAzMDYgIm5ldC9odHRwLkNvb2tpZSIgPHR5cGUgMzA3IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgVmFsdWUgPHR5cGUgLTE2PjsgUGF0aCA8dHlwZSAtMTY+OyBEb21haW4gPHR5cGUgLTE2PjsgRXhwaXJlcyA8dHlwZSAxMj47IFJhd0V4cGlyZXMgPHR5cGUgLTE2PjsgTWF4QWdlIDx0eXBlIC0xMT47IFNlY3VyZSA8dHlwZSAtMTU+OyBIdHRwT25seSA8dHlwZSAtMTU+OyBSYXcgPHR5cGUgLTE2PjsgVW5wYXJzZWQgPHR5cGUgMzA4IFtdIDx0eXBlIC0xNj4+OyB9PgogZnVuYyAoYyA8dHlwZSAzMDkgKjx0eXBlIDMwNj4+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPj4+OwogZnVuYyAociA8dHlwZSAyNzE+KSBXcml0ZVByb3h5ICh3IDx0eXBlIDQ1PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjcxPikgTXVsdGlwYXJ0UmVhZGVyICgpICg/IDx0eXBlIDI3Mj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI3MT4pIFdyaXRlICh3IDx0eXBlIDQ1PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjcxPikgLm5ldC9odHRwLndhbnRzQ2xvc2UgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMjcxPikgRm9ybVZhbHVlIChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMjcxPikgUGFyc2VGb3JtICgpIDx0eXBlIC0xOT47CiBmdW5jIChyIDx0eXBlIDI3MT4pIENvb2tpZSAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSAzMDU+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAociA8dHlwZSAyNzE+KSBQb3N0Rm9ybVZhbHVlIChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMjcxPikgQWRkQ29va2llIChjIDx0eXBlIDMwNT4pOwogZnVuYyAociA8dHlwZSAyNzE+KSBGb3JtRmlsZSAoa2V5IDx0eXBlIC0xNj4pICg/IDx0eXBlIDEwMz4sID8gPHR5cGUgOTU+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAociA8dHlwZSAyNzE+KSAubmV0L2h0dHAuY2xvc2VCb2R5ICgpOwogZnVuYyAociA8dHlwZSAyNzE+KSBTZXRCYXNpY0F1dGggKHVzZXJuYW1lIDx0eXBlIC0xNj4sIHBhc3N3b3JkIDx0eXBlIC0xNj4pOwogZnVuYyAociA8dHlwZSAyNzE+KSBCYXNpY0F1dGggKCkgKHVzZXJuYW1lIDx0eXBlIC0xNj4sIHBhc3N3b3JkIDx0eXBlIC0xNj4sIG9rIDx0eXBlIC0xNT4pOwo+Pl0gPHR5cGUgLTEyPj47IC5uZXQvaHR0cC9odHRwdXRpbC5waXBlIDx0eXBlIDMxMCAibmV0L3RleHRwcm90by5QaXBlbGluZSIgPHR5cGUgMzExIHN0cnVjdCB7IC5uZXQvdGV4dHByb3RvLm11IDx0eXBlIDM+OyAubmV0L3RleHRwcm90by5pZCA8dHlwZSAtMTI+OyAubmV0L3RleHRwcm90by5yZXF1ZXN0IDx0eXBlIDMxMiAiLm5ldC90ZXh0cHJvdG8uc2VxdWVuY2VyIiA8dHlwZSAzMTMgc3RydWN0IHsgLm5ldC90ZXh0cHJvdG8ubXUgPHR5cGUgMz47IC5uZXQvdGV4dHByb3RvLmlkIDx0eXBlIC0xMj47IC5uZXQvdGV4dHByb3RvLndhaXQgPHR5cGUgMzE0IG1hcCBbPHR5cGUgLTEyPl0gPHR5cGUgMzE1IGNoYW4gPHR5cGUgLTEyPj4+OyB9PgogZnVuYyAocyA8dHlwZSAzMTYgKjx0eXBlIDMxMj4+KSBFbmQgKGlkIDx0eXBlIC0xMj4pOwogZnVuYyAocyA8dHlwZSAzMTY+KSBTdGFydCAoaWQgPHR5cGUgLTEyPik7Cj47IC5uZXQvdGV4dHByb3RvLnJlc3BvbnNlIDx0eXBlIDMxMj47IH0+CiBmdW5jIChwIDx0eXBlIDMxNyAqPHR5cGUgMzEwPj4pIE5leHQgKCkgPHR5cGUgLTEyPjsKIGZ1bmMgKHAgPHR5cGUgMzE3PikgU3RhcnRSZXNwb25zZSAoaWQgPHR5cGUgLTEyPik7CiBmdW5jIChwIDx0eXBlIDMxNz4pIFN0YXJ0UmVxdWVzdCAoaWQgPHR5cGUgLTEyPik7CiBmdW5jIChwIDx0eXBlIDMxNz4pIEVuZFJlc3BvbnNlIChpZCA8dHlwZSAtMTI+KTsKIGZ1bmMgKHAgPHR5cGUgMzE3PikgRW5kUmVxdWVzdCAoaWQgPHR5cGUgLTEyPik7Cj47IC5uZXQvaHR0cC9odHRwdXRpbC53cml0ZVJlcSA8dHlwZSAzMTggKD8gPHR5cGUgNTk+LCA/IDx0eXBlIDQ1PikgPHR5cGUgLTE5Pj47IH0+CiBmdW5jIChjYyA8dHlwZSAzMTkgKjx0eXBlIDE+PikgSGlqYWNrICgpIChjIDx0eXBlIDY+LCByIDx0eXBlIDM3Pik7CiBmdW5jIChjYyA8dHlwZSAzMTk+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoY2MgPHR5cGUgMzE5PikgV3JpdGUgKHJlcSA8dHlwZSA1OT4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjYyA8dHlwZSAzMTk+KSBQZW5kaW5nICgpIDx0eXBlIC0xMT47CiBmdW5jIChjYyA8dHlwZSAzMTk+KSBSZWFkIChyZXEgPHR5cGUgNTk+KSAocmVzcCA8dHlwZSAzMjAgKjx0eXBlIDMyMSAibmV0L2h0dHAuUmVzcG9uc2UiIDx0eXBlIDMyMiBzdHJ1Y3QgeyBTdGF0dXMgPHR5cGUgLTE2PjsgU3RhdHVzQ29kZSA8dHlwZSAtMTE+OyBQcm90byA8dHlwZSAtMTY+OyBQcm90b01ham9yIDx0eXBlIC0xMT47IFByb3RvTWlub3IgPHR5cGUgLTExPjsgSGVhZGVyIDx0eXBlIDczPjsgQm9keSA8dHlwZSA1ND47IENvbnRlbnRMZW5ndGggPHR5cGUgLTQ+OyBUcmFuc2ZlckVuY29kaW5nIDx0eXBlIDMyMyBbXSA8dHlwZSAtMTY+PjsgQ2xvc2UgPHR5cGUgLTE1PjsgVHJhaWxlciA8dHlwZSA3Mz47IFJlcXVlc3QgPHR5cGUgNTk+OyBUTFMgPHR5cGUgMTExPjsgfT4KIGZ1bmMgKHIgPHR5cGUgMzI0ICo8dHlwZSAzMjE+PikgTG9jYXRpb24gKCkgKD8gPHR5cGUgNjI+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAociA8dHlwZSAzMjQ+KSBXcml0ZSAodyA8dHlwZSA0NT4pIDx0eXBlIC0xOT47CiBmdW5jIChyIDx0eXBlIDMyND4pIENvb2tpZXMgKCkgPHR5cGUgMzI1IFtdIDx0eXBlIDMwNT4+OwogZnVuYyAociA8dHlwZSAzMjQ+KSBQcm90b0F0TGVhc3QgKG1ham9yIDx0eXBlIC0xMT4sIG1pbm9yIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47Cj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjYyA8dHlwZSAzMTk+KSBEbyAocmVxIDx0eXBlIDU5PikgKHJlc3AgPHR5cGUgMzIwPiwgZXJyIDx0eXBlIC0xOT4pOwo+OwpmdW5jIER1bXBSZXF1ZXN0IChyZXEgPHR5cGUgNTk+LCBib2R5IDx0eXBlIC0xNT4pIChkdW1wIDx0eXBlIDMyNiBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwpmdW5jIER1bXBSZXF1ZXN0T3V0IChyZXEgPHR5cGUgNTk+LCBib2R5IDx0eXBlIC0xNT4pICg/IDx0eXBlIDMyNyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBEdW1wUmVzcG9uc2UgKHJlc3AgPHR5cGUgMzIwPiwgYm9keSA8dHlwZSAtMTU+KSAoZHVtcCA8dHlwZSAzMjggW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKdmFyIEVyckNsb3NlZCA8dHlwZSAzMjkgKjx0eXBlIDMzMCAibmV0L2h0dHAuUHJvdG9jb2xFcnJvciIgPHR5cGUgMzMxIHN0cnVjdCB7IEVycm9yU3RyaW5nIDx0eXBlIC0xNj47IH0+CiBmdW5jIChlcnIgPHR5cGUgMzMyICo8dHlwZSAzMzA+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPj47CnZhciBFcnJMaW5lVG9vTG9uZyA8dHlwZSAtMTk+Owp2YXIgRXJyUGVyc2lzdEVPRiA8dHlwZSAzMjk+Owp2YXIgRXJyUGlwZWxpbmUgPHR5cGUgMzI5PjsKZnVuYyBOZXdDaHVua2VkUmVhZGVyIChyIDx0eXBlIDQxPikgPHR5cGUgNDE+OwpmdW5jIE5ld0NodW5rZWRXcml0ZXIgKHcgPHR5cGUgNDU+KSA8dHlwZSAzMzMgImlvLldyaXRlQ2xvc2VyIiA8dHlwZSAzMzQgaW50ZXJmYWNlIHsgPyA8dHlwZSA0NT47ID8gPHR5cGUgNTY+OyB9Pj47CmZ1bmMgTmV3Q2xpZW50Q29ubiAoYyA8dHlwZSA2PiwgciA8dHlwZSAzNz4pIDx0eXBlIDMxOT47CmZ1bmMgTmV3UHJveHlDbGllbnRDb25uIChjIDx0eXBlIDY+LCByIDx0eXBlIDM3PikgPHR5cGUgMzE5PjsKZnVuYyBOZXdTZXJ2ZXJDb25uIChjIDx0eXBlIDY+LCByIDx0eXBlIDM3PikgPHR5cGUgMzM1ICo8dHlwZSAzMzYgIlNlcnZlckNvbm4iIDx0eXBlIDMzNyBzdHJ1Y3QgeyAubmV0L2h0dHAvaHR0cHV0aWwubGsgPHR5cGUgMz47IC5uZXQvaHR0cC9odHRwdXRpbC5jIDx0eXBlIDY+OyAubmV0L2h0dHAvaHR0cHV0aWwuciA8dHlwZSAzNz47IC5uZXQvaHR0cC9odHRwdXRpbC5yZSA8dHlwZSAtMTk+OyAubmV0L2h0dHAvaHR0cHV0aWwud2UgPHR5cGUgLTE5PjsgLm5ldC9odHRwL2h0dHB1dGlsLmxhc3Rib2R5IDx0eXBlIDU0PjsgLm5ldC9odHRwL2h0dHB1dGlsLm5yZWFkIDx0eXBlIC0xMT47IC5uZXQvaHR0cC9odHRwdXRpbC5ud3JpdHRlbiA8dHlwZSAtMTE+OyAubmV0L2h0dHAvaHR0cHV0aWwucGlwZXJlcSA8dHlwZSAzMzggbWFwIFs8dHlwZSA1OT5dIDx0eXBlIC0xMj4+OyAubmV0L2h0dHAvaHR0cHV0aWwucGlwZSA8dHlwZSAzMTA+OyB9PgogZnVuYyAoc2MgPHR5cGUgMzM5ICo8dHlwZSAzMzY+PikgSGlqYWNrICgpIChjIDx0eXBlIDY+LCByIDx0eXBlIDM3Pik7CiBmdW5jIChzYyA8dHlwZSAzMzk+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoc2MgPHR5cGUgMzM5PikgUmVhZCAoKSAocmVxIDx0eXBlIDU5PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoc2MgPHR5cGUgMzM5PikgUGVuZGluZyAoKSA8dHlwZSAtMTE+OwogZnVuYyAoc2MgPHR5cGUgMzM5PikgV3JpdGUgKHJlcSA8dHlwZSA1OT4sIHJlc3AgPHR5cGUgMzIwPikgPHR5cGUgLTE5PjsKPj47CmZ1bmMgTmV3U2luZ2xlSG9zdFJldmVyc2VQcm94eSAodGFyZ2V0IDx0eXBlIDYyPikgPHR5cGUgMzQwICo8dHlwZSAzNDEgIlJldmVyc2VQcm94eSIgPHR5cGUgMzQyIHN0cnVjdCB7IERpcmVjdG9yIDx0eXBlIDM0MyAoPyA8dHlwZSA1OT4pPjsgVHJhbnNwb3J0IDx0eXBlIDM0NCAibmV0L2h0dHAuUm91bmRUcmlwcGVyIiA8dHlwZSAzNDUgaW50ZXJmYWNlIHsgUm91bmRUcmlwICg/IDx0eXBlIDU5PikgKD8gPHR5cGUgMzIwPiwgPyA8dHlwZSAtMTk+KTsgfT4+OyBGbHVzaEludGVydmFsIDx0eXBlIDMyPjsgRXJyb3JMb2cgPHR5cGUgMzQ2ICo8dHlwZSAzNDcgImxvZy5Mb2dnZXIiIDx0eXBlIDM0OCBzdHJ1Y3QgeyAubG9nLm11IDx0eXBlIDM+OyAubG9nLnByZWZpeCA8dHlwZSAtMTY+OyAubG9nLmZsYWcgPHR5cGUgLTExPjsgLmxvZy5vdXQgPHR5cGUgNDU+OyAubG9nLmJ1ZiA8dHlwZSAzNDkgW10gPHR5cGUgLTIwPj47IH0+CiBmdW5jIChsIDx0eXBlIDM1MCAqPHR5cGUgMzQ3Pj4pIFByaW50ZiAoZm9ybWF0IDx0eXBlIC0xNj4sIHYgLi4uPHR5cGUgMzUxIGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgMzUwPikgRmF0YWwgKHYgLi4uPHR5cGUgMzUyIGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgMzUwPikgUHJpbnRsbiAodiAuLi48dHlwZSAzNTMgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSAzNTA+KSBQcmVmaXggKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGwgPHR5cGUgMzUwPikgUHJpbnQgKHYgLi4uPHR5cGUgMzU0IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgMzUwPikgU2V0UHJlZml4IChwcmVmaXggPHR5cGUgLTE2Pik7CiBmdW5jIChsIDx0eXBlIDM1MD4pIE91dHB1dCAoY2FsbGRlcHRoIDx0eXBlIC0xMT4sIHMgPHR5cGUgLTE2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGwgPHR5cGUgMzUwPikgUGFuaWNmIChmb3JtYXQgPHR5cGUgLTE2PiwgdiAuLi48dHlwZSAzNTUgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSAzNTA+KSAubG9nLmZvcm1hdEhlYWRlciAoYnVmIDx0eXBlIDM1NiAqPHR5cGUgMzU3IFtdIDx0eXBlIC0yMD4+PiwgdCA8dHlwZSAxMj4sIGZpbGUgPHR5cGUgLTE2PiwgbGluZSA8dHlwZSAtMTE+KTsKIGZ1bmMgKGwgPHR5cGUgMzUwPikgRmF0YWxsbiAodiAuLi48dHlwZSAzNTggaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSAzNTA+KSBTZXRGbGFncyAoZmxhZyA8dHlwZSAtMTE+KTsKIGZ1bmMgKGwgPHR5cGUgMzUwPikgUGFuaWNsbiAodiAuLi48dHlwZSAzNTkgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSAzNTA+KSBGbGFncyAoKSA8dHlwZSAtMTE+OwogZnVuYyAobCA8dHlwZSAzNTA+KSBQYW5pYyAodiAuLi48dHlwZSAzNjAgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSAzNTA+KSBGYXRhbGYgKGZvcm1hdCA8dHlwZSAtMTY+LCB2IC4uLjx0eXBlIDM2MSBpbnRlcmZhY2UgeyB9Pik7Cj4+OyB9PgogZnVuYyAocCA8dHlwZSAzNjIgKjx0eXBlIDM0MT4+KSBTZXJ2ZUhUVFAgKHJ3IDx0eXBlIDM2MyAibmV0L2h0dHAuUmVzcG9uc2VXcml0ZXIiIDx0eXBlIDM2NCBpbnRlcmZhY2UgeyBIZWFkZXIgKCkgPHR5cGUgNzM+OyBXcml0ZSAoPyA8dHlwZSAzNjUgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7IFdyaXRlSGVhZGVyICg/IDx0eXBlIC0xMT4pOyB9Pj4sIHJlcSA8dHlwZSA1OT4pOwogZnVuYyAocCA8dHlwZSAzNjI+KSAubmV0L2h0dHAvaHR0cHV0aWwuY29weVJlc3BvbnNlIChkc3QgPHR5cGUgNDU+LCBzcmMgPHR5cGUgNDE+KTsKIGZ1bmMgKHAgPHR5cGUgMzYyPikgLm5ldC9odHRwL2h0dHB1dGlsLmxvZ2YgKGZvcm1hdCA8dHlwZSAtMTY+LCBhcmdzIC4uLjx0eXBlIDM2NiBpbnRlcmZhY2UgeyB9Pik7Cj4+Owp0eXBlIDx0eXBlIDM0MT47CnR5cGUgPHR5cGUgMzM2PjsKY2hlY2tzdW0gOERCMzREMDY2RDg0MzUwRDZGNTI1RDk1NUQyOUY2REM3NjY1RTg2ODsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAFSVAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAIiVAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAACwlQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAA0JUAAAEAAAAAAAAAAAAAAAEAAAAAAAAA