f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAACscQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIG5ldDsKcGtncGF0aCBuZXQ7CnByaW9yaXR5IDY7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IHJhbmQgbWF0aC9yYW5kICJtYXRoL3JhbmQiOwppbXBvcnQgb3Mgb3MgIm9zIjsKaW1wb3J0IHJ1bnRpbWUgcnVudGltZSAicnVudGltZSI7CmltcG9ydCBzb3J0IHNvcnQgInNvcnQiOwppbXBvcnQgc3luYyBzeW5jICJzeW5jIjsKaW1wb3J0IGF0b21pYyBzeW5jL2F0b21pYyAic3luYy9hdG9taWMiOwppbXBvcnQgc3lzY2FsbCBzeXNjYWxsICJzeXNjYWxsIjsKaW1wb3J0IHRpbWUgdGltZSAidGltZSI7CmltcG9ydCB1bnNhZmUgdW5zYWZlICJ1bnNhZmUiOwppbml0IG5ldCBuZXQuLmltcG9ydCA2IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByYW5kIG1hdGhfcmFuZC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyB0aW1lIHRpbWUuLmltcG9ydCA0IG9zIG9zLi5pbXBvcnQgNTsKdHlwZSA8dHlwZSAxICJBZGRyIiA8dHlwZSAyIGludGVyZmFjZSB7IE5ldHdvcmsgKCkgPHR5cGUgLTE2PjsgU3RyaW5nICgpIDx0eXBlIC0xNj47IH0+PjsKdHlwZSA8dHlwZSAzICJBZGRyRXJyb3IiIDx0eXBlIDQgc3RydWN0IHsgRXJyIDx0eXBlIC0xNj47IEFkZHIgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGUgPHR5cGUgNSAqPHR5cGUgMz4+KSBFcnJvciAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZSA8dHlwZSA1PikgVGVtcG9yYXJ5ICgpIDx0eXBlIC0xNT47CiBmdW5jIChlIDx0eXBlIDU+KSBUaW1lb3V0ICgpIDx0eXBlIC0xNT47Cj47CmZ1bmMgQ0lEUk1hc2sgKG9uZXMgPHR5cGUgLTExPiwgYml0cyA8dHlwZSAtMTE+KSA8dHlwZSA2ICJJUE1hc2siIDx0eXBlIDcgW10gPHR5cGUgLTIwPj4KIGZ1bmMgKG0gPHR5cGUgNj4pIFNpemUgKCkgKG9uZXMgPHR5cGUgLTExPiwgYml0cyA8dHlwZSAtMTE+KTsKIGZ1bmMgKG0gPHR5cGUgNj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+Owp0eXBlIDx0eXBlIDggIkNvbm4iIDx0eXBlIDkgaW50ZXJmYWNlIHsgUmVhZCAoYiA8dHlwZSAxMCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBXcml0ZSAoYiA8dHlwZSAxMSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBDbG9zZSAoKSA8dHlwZSAtMTk+OyBMb2NhbEFkZHIgKCkgPHR5cGUgMT47IFJlbW90ZUFkZHIgKCkgPHR5cGUgMT47IFNldERlYWRsaW5lICh0IDx0eXBlIDEyICJ0aW1lLlRpbWUiIDx0eXBlIDEzIHN0cnVjdCB7IC50aW1lLnNlYyA8dHlwZSAtND47IC50aW1lLm5zZWMgPHR5cGUgLTM+OyAudGltZS5sb2MgPHR5cGUgMTQgKjx0eXBlIDE1ICJ0aW1lLkxvY2F0aW9uIiA8dHlwZSAxNiBzdHJ1Y3QgeyAudGltZS5uYW1lIDx0eXBlIC0xNj47IC50aW1lLnpvbmUgPHR5cGUgMTcgW10gPHR5cGUgMTggIi50aW1lLnpvbmUiIDx0eXBlIDE5IHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUub2Zmc2V0IDx0eXBlIC0xMT47IC50aW1lLmlzRFNUIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLnR4IDx0eXBlIDIwIFtdIDx0eXBlIDIxICIudGltZS56b25lVHJhbnMiIDx0eXBlIDIyIHN0cnVjdCB7IC50aW1lLndoZW4gPHR5cGUgLTQ+OyAudGltZS5pbmRleCA8dHlwZSAtNT47IC50aW1lLmlzc3RkIDx0eXBlIC0xNT47IC50aW1lLmlzdXRjIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLmNhY2hlU3RhcnQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZUVuZCA8dHlwZSAtND47IC50aW1lLmNhY2hlWm9uZSA8dHlwZSAyMyAqPHR5cGUgMTg+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgMjQgKjx0eXBlIDE1Pj4pIC50aW1lLmZpcnN0Wm9uZVVzZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgMjQ+KSAudGltZS5sb29rdXBOYW1lIChuYW1lIDx0eXBlIC0xNj4sIHVuaXggPHR5cGUgLTQ+KSAob2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAobCA8dHlwZSAyND4pIC50aW1lLmxvb2t1cCAoc2VjIDx0eXBlIC00PikgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIHN0YXJ0IDx0eXBlIC00PiwgZW5kIDx0eXBlIC00Pik7CiBmdW5jIChsIDx0eXBlIDI0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDI0PikgLnRpbWUubG9va3VwRmlyc3Rab25lICgpIDx0eXBlIC0xMT47CiBmdW5jIChsIDx0eXBlIDI0PikgLnRpbWUuZ2V0ICgpIDx0eXBlIDI0PjsKPj47IH0+CiBmdW5jICh0IDx0eXBlIDEyPikgTWFyc2hhbFRleHQgKCkgKD8gPHR5cGUgMjUgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDEyPikgQWZ0ZXIgKHUgPHR5cGUgMTI+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxMj4pIERhdGUgKCkgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgMjYgInRpbWUuTW9udGgiIDx0eXBlIC0xMT4KIGZ1bmMgKG0gPHR5cGUgMjY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPiwgZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxMj4pIC50aW1lLmFicyAoKSA8dHlwZSAtOD47CiBmdW5jICh0IDx0eXBlIDEyPikgV2Vla2RheSAoKSA8dHlwZSAyNyAidGltZS5XZWVrZGF5IiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDI3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jICh0IDx0eXBlIDEyPikgTmFub3NlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAyOCAqPHR5cGUgMTI+PikgR29iRGVjb2RlIChkYXRhIDx0eXBlIDI5IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAxMj4pIEluIChsb2MgPHR5cGUgMTQ+KSA8dHlwZSAxMj47CiBmdW5jICh0IDx0eXBlIDEyPikgTG9jYWwgKCkgPHR5cGUgMTI+OwogZnVuYyAodCA8dHlwZSAxMj4pIE1vbnRoICgpIDx0eXBlIDI2PjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBIb3VyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDEyPikgTWFyc2hhbEJpbmFyeSAoKSAoPyA8dHlwZSAzMCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBVbml4TmFubyAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDEyPikgRXF1YWwgKHUgPHR5cGUgMTI+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxMj4pIEZvcm1hdCAobGF5b3V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDEyPikgWm9uZSAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDEyPikgQWRkRGF0ZSAoeWVhcnMgPHR5cGUgLTExPiwgbW9udGhzIDx0eXBlIC0xMT4sIGRheXMgPHR5cGUgLTExPikgPHR5cGUgMTI+OwogZnVuYyAodCA8dHlwZSAxMj4pIERheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxMj4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDMxIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAxMj4pIFVUQyAoKSA8dHlwZSAxMj47CiBmdW5jICh0IDx0eXBlIDEyPikgQ2xvY2sgKCkgKGhvdXIgPHR5cGUgLTExPiwgbWluIDx0eXBlIC0xMT4sIHNlYyA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMTI+KSAudGltZS5kYXRlIChmdWxsIDx0eXBlIC0xNT4pICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDI2PiwgZGF5IDx0eXBlIC0xMT4sIHlkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDEyPikgSXNaZXJvICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDEyPikgQmVmb3JlICh1IDx0eXBlIDEyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBTZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBNaW51dGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBSb3VuZCAoZCA8dHlwZSAzMiAidGltZS5EdXJhdGlvbiIgPHR5cGUgLTQ+CiBmdW5jIChkIDx0eXBlIDMyPikgU2Vjb25kcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAzMj4pIE1pbnV0ZXMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMzI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGQgPHR5cGUgMzI+KSBIb3VycyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAzMj4pIE5hbm9zZWNvbmRzICgpIDx0eXBlIC00PjsKPikgPHR5cGUgMTI+OwogZnVuYyAodCA8dHlwZSAxMj4pIFN1YiAodSA8dHlwZSAxMj4pIDx0eXBlIDMyPjsKIGZ1bmMgKHQgPHR5cGUgMjg+KSBVbm1hcnNoYWxUZXh0IChkYXRhIDx0eXBlIDMzIFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAxMj4pIFVuaXggKCkgPHR5cGUgLTQ+OwogZnVuYyAodCA8dHlwZSAxMj4pIFRydW5jYXRlIChkIDx0eXBlIDMyPikgPHR5cGUgMTI+OwogZnVuYyAodCA8dHlwZSAxMj4pIEFkZCAoZCA8dHlwZSAzMj4pIDx0eXBlIDEyPjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBHb2JFbmNvZGUgKCkgKD8gPHR5cGUgMzQgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDEyPikgTG9jYXRpb24gKCkgPHR5cGUgMTQ+OwogZnVuYyAodCA8dHlwZSAyOD4pIFVubWFyc2hhbEJpbmFyeSAoZGF0YSA8dHlwZSAzNSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBJU09XZWVrICgpICh5ZWFyIDx0eXBlIC0xMT4sIHdlZWsgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDEyPikgLnRpbWUubG9jYWJzICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBhYnMgPHR5cGUgLTg+KTsKIGZ1bmMgKHQgPHR5cGUgMTI+KSBZZWFyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDEyPikgWWVhckRheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAyOD4pIFVubWFyc2hhbEpTT04gKGRhdGEgPHR5cGUgMzYgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7Cj4pIDx0eXBlIC0xOT47IFNldFJlYWREZWFkbGluZSAodCA8dHlwZSAxMj4pIDx0eXBlIC0xOT47IFNldFdyaXRlRGVhZGxpbmUgKHQgPHR5cGUgMTI+KSA8dHlwZSAtMTk+OyB9Pj47CnR5cGUgPHR5cGUgMzcgIkROU0NvbmZpZ0Vycm9yIiA8dHlwZSAzOCBzdHJ1Y3QgeyBFcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMzkgKjx0eXBlIDM3Pj4pIEVycm9yICgpIDx0eXBlIC0xNj47CiBmdW5jIChlIDx0eXBlIDM5PikgVGltZW91dCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoZSA8dHlwZSAzOT4pIFRlbXBvcmFyeSAoKSA8dHlwZSAtMTU+Owo+Owp0eXBlIDx0eXBlIDQwICJETlNFcnJvciIgPHR5cGUgNDEgc3RydWN0IHsgRXJyIDx0eXBlIC0xNj47IE5hbWUgPHR5cGUgLTE2PjsgU2VydmVyIDx0eXBlIC0xNj47IElzVGltZW91dCA8dHlwZSAtMTU+OyB9PgogZnVuYyAoZSA8dHlwZSA0MiAqPHR5cGUgNDA+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGUgPHR5cGUgNDI+KSBUaW1lb3V0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChlIDx0eXBlIDQyPikgVGVtcG9yYXJ5ICgpIDx0eXBlIC0xNT47Cj47CmZ1bmMgRGlhbCAobmV0d29yayA8dHlwZSAtMTY+LCBhZGRyZXNzIDx0eXBlIC0xNj4pICg/IDx0eXBlIDg+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIERpYWxJUCAobmV0UHJvdG8gPHR5cGUgLTE2PiwgbGFkZHIgPHR5cGUgNDMgKjx0eXBlIDQ0ICJJUEFkZHIiIDx0eXBlIDQ1IHN0cnVjdCB7IElQIDx0eXBlIDQ2ICJJUCIgPHR5cGUgNDcgW10gPHR5cGUgLTIwPj4KIGZ1bmMgKGlwIDx0eXBlIDQ2PikgSXNVbnNwZWNpZmllZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgNDY+KSBJc0xvb3BiYWNrICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSA0Nj4pIElzTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSA0Nj4pIElzSW50ZXJmYWNlTG9jYWxNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDQ2PikgSXNMaW5rTG9jYWxNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDQ2PikgSXNMaW5rTG9jYWxVbmljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSA0Nj4pIElzR2xvYmFsVW5pY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgNDY+KSBUbzQgKCkgPHR5cGUgNDY+OwogZnVuYyAoaXAgPHR5cGUgNDY+KSBUbzE2ICgpIDx0eXBlIDQ2PjsKIGZ1bmMgKGlwIDx0eXBlIDQ2PikgRGVmYXVsdE1hc2sgKCkgPHR5cGUgNj47CiBmdW5jIChpcCA8dHlwZSA0Nj4pIE1hc2sgKG1hc2sgPHR5cGUgNj4pIDx0eXBlIDQ2PjsKIGZ1bmMgKGlwIDx0eXBlIDQ2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChpcCA8dHlwZSA0Nj4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDQ4IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoaXAgPHR5cGUgNDkgKjx0eXBlIDQ2Pj4pIFVubWFyc2hhbFRleHQgKHRleHQgPHR5cGUgNTAgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jIChpcCA8dHlwZSA0Nj4pIEVxdWFsICh4IDx0eXBlIDQ2PikgPHR5cGUgLTE1PjsKPjsgWm9uZSA8dHlwZSAtMTY+OyB9PgogZnVuYyAoYSA8dHlwZSA1MSAqPHR5cGUgNDQ+PikgTmV0d29yayAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYSA8dHlwZSA1MT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYSA8dHlwZSA1MT4pIC5uZXQudG9BZGRyICgpIDx0eXBlIDE+OwogZnVuYyAoYSA8dHlwZSA1MT4pIC5uZXQuZmFtaWx5ICgpIDx0eXBlIC0xMT47CiBmdW5jIChhIDx0eXBlIDUxPikgLm5ldC5pc1dpbGRjYXJkICgpIDx0eXBlIC0xNT47CiBmdW5jIChhIDx0eXBlIDUxPikgLm5ldC5zb2NrYWRkciAoZmFtaWx5IDx0eXBlIC0xMT4pICg/IDx0eXBlIDUyICJzeXNjYWxsLlNvY2thZGRyIiA8dHlwZSA1MyBpbnRlcmZhY2UgeyAuc3lzY2FsbC5zb2NrYWRkciAoKSAocHRyIDx0eXBlIDU0ICo8dHlwZSA1NSAic3lzY2FsbC5SYXdTb2NrYWRkckFueSIgPHR5cGUgNTYgc3RydWN0IHsgQWRkciA8dHlwZSA1NyAic3lzY2FsbC5SYXdTb2NrYWRkciIgPHR5cGUgNTggc3RydWN0IHsgRmFtaWx5IDx0eXBlIC02PjsgRGF0YSA8dHlwZSA1OSBbMTQgXSA8dHlwZSAtMT4+OyB9Pj47IFBhZCA8dHlwZSA2MCBbOTYgXSA8dHlwZSAtMT4+OyB9Pj4+LCBsZW4gPHR5cGUgNjEgInN5c2NhbGwuU29ja2xlbl90IiA8dHlwZSA2MiAiLnN5c2NhbGwuX3NvY2tsZW5fdCIgPHR5cGUgLTc+Pj4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCA/IDx0eXBlIC0xOT4pOwo+PiwgcmFkZHIgPHR5cGUgNDM+KSAoPyA8dHlwZSA2MyAqPHR5cGUgNjQgIklQQ29ubiIgPHR5cGUgNjUgc3RydWN0IHsgPyA8dHlwZSA2NiAiLm5ldC5jb25uIiA8dHlwZSA2NyBzdHJ1Y3QgeyAubmV0LmZkIDx0eXBlIDY4ICo8dHlwZSA2OSAiLm5ldC5uZXRGRCIgPHR5cGUgNzAgc3RydWN0IHsgLm5ldC5mZG11IDx0eXBlIDcxICIubmV0LmZkTXV0ZXgiIDx0eXBlIDcyIHN0cnVjdCB7IC5uZXQuc3RhdGUgPHR5cGUgLTg+OyAubmV0LnJzZW1hIDx0eXBlIC03PjsgLm5ldC53c2VtYSA8dHlwZSAtNz47IH0+CiBmdW5jIChtdSA8dHlwZSA3MyAqPHR5cGUgNzE+PikgSW5jcmVmICgpIDx0eXBlIC0xNT47CiBmdW5jIChtdSA8dHlwZSA3Mz4pIEluY3JlZkFuZENsb3NlICgpIDx0eXBlIC0xNT47CiBmdW5jIChtdSA8dHlwZSA3Mz4pIERlY3JlZiAoKSA8dHlwZSAtMTU+OwogZnVuYyAobXUgPHR5cGUgNzM+KSBSV0xvY2sgKHJlYWQgPHR5cGUgLTE1PikgPHR5cGUgLTE1PjsKIGZ1bmMgKG11IDx0eXBlIDczPikgUldVbmxvY2sgKHJlYWQgPHR5cGUgLTE1PikgPHR5cGUgLTE1PjsKPjsgLm5ldC5zeXNmZCA8dHlwZSAtMTE+OyAubmV0LmZhbWlseSA8dHlwZSAtMTE+OyAubmV0LnNvdHlwZSA8dHlwZSAtMTE+OyAubmV0LmlzQ29ubmVjdGVkIDx0eXBlIC0xNT47IC5uZXQubmV0IDx0eXBlIC0xNj47IC5uZXQubGFkZHIgPHR5cGUgMT47IC5uZXQucmFkZHIgPHR5cGUgMT47IC5uZXQucGQgPHR5cGUgNzQgIi5uZXQucG9sbERlc2MiIDx0eXBlIDc1IHN0cnVjdCB7IC5uZXQucnVudGltZUN0eCA8dHlwZSAtMTM+OyB9PgogZnVuYyAocGQgPHR5cGUgNzYgKjx0eXBlIDc0Pj4pIEluaXQgKGZkIDx0eXBlIDc3ICo8dHlwZSA2OT4+KSA8dHlwZSAtMTk+OwogZnVuYyAocGQgPHR5cGUgNzY+KSBDbG9zZSAoKTsKIGZ1bmMgKHBkIDx0eXBlIDc2PikgTG9jayAoKTsKIGZ1bmMgKHBkIDx0eXBlIDc2PikgVW5sb2NrICgpOwogZnVuYyAocGQgPHR5cGUgNzY+KSBXYWtldXAgKCk7CiBmdW5jIChwZCA8dHlwZSA3Nj4pIEV2aWN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChwZCA8dHlwZSA3Nj4pIFByZXBhcmUgKG1vZGUgPHR5cGUgLTExPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHBkIDx0eXBlIDc2PikgUHJlcGFyZVJlYWQgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHBkIDx0eXBlIDc2PikgUHJlcGFyZVdyaXRlICgpIDx0eXBlIC0xOT47CiBmdW5jIChwZCA8dHlwZSA3Nj4pIFdhaXQgKG1vZGUgPHR5cGUgLTExPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHBkIDx0eXBlIDc2PikgV2FpdFJlYWQgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHBkIDx0eXBlIDc2PikgV2FpdFdyaXRlICgpIDx0eXBlIC0xOT47CiBmdW5jIChwZCA8dHlwZSA3Nj4pIFdhaXRDYW5jZWxlZCAobW9kZSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHBkIDx0eXBlIDc2PikgV2FpdENhbmNlbGVkUmVhZCAoKTsKIGZ1bmMgKHBkIDx0eXBlIDc2PikgV2FpdENhbmNlbGVkV3JpdGUgKCk7Cj47IH0+CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQuaW5pdCAoKSA8dHlwZSAtMTk+OwogZnVuYyAoZmQgPHR5cGUgNzc+KSAubmV0LnNldEFkZHIgKGxhZGRyIDx0eXBlIDE+LCByYWRkciA8dHlwZSAxPik7CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQubmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZmQgPHR5cGUgNzc+KSAubmV0LmNvbm5lY3QgKGxhIDx0eXBlIDUyPiwgcmEgPHR5cGUgNTI+LCBkZWFkbGluZSA8dHlwZSAxMj4pIDx0eXBlIC0xOT47CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQuZGVzdHJveSAoKTsKIGZ1bmMgKGZkIDx0eXBlIDc3PikgLm5ldC5pbmNyZWYgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGZkIDx0eXBlIDc3PikgLm5ldC5kZWNyZWYgKCk7CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQucmVhZExvY2sgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGZkIDx0eXBlIDc3PikgLm5ldC5yZWFkVW5sb2NrICgpOwogZnVuYyAoZmQgPHR5cGUgNzc+KSAubmV0LndyaXRlTG9jayAoKSA8dHlwZSAtMTk+OwogZnVuYyAoZmQgPHR5cGUgNzc+KSAubmV0LndyaXRlVW5sb2NrICgpOwogZnVuYyAoZmQgPHR5cGUgNzc+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoZmQgPHR5cGUgNzc+KSAubmV0LnNodXRkb3duIChob3cgPHR5cGUgLTExPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGZkIDx0eXBlIDc3PikgLm5ldC5jbG9zZVJlYWQgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGZkIDx0eXBlIDc3PikgLm5ldC5jbG9zZVdyaXRlICgpIDx0eXBlIC0xOT47CiBmdW5jIChmZCA8dHlwZSA3Nz4pIFJlYWQgKHAgPHR5cGUgNzggW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGZkIDx0eXBlIDc3PikgLm5ldC5yZWFkRnJvbSAocCA8dHlwZSA3OSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgc2EgPHR5cGUgNTI+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQucmVhZE1zZyAocCA8dHlwZSA4MCBbXSA8dHlwZSAtMjA+Piwgb29iIDx0eXBlIDgxIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBvb2JuIDx0eXBlIC0xMT4sIGZsYWdzIDx0eXBlIC0xMT4sIHNhIDx0eXBlIDUyPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZmQgPHR5cGUgNzc+KSBXcml0ZSAocCA8dHlwZSA4MiBbXSA8dHlwZSAtMjA+PikgKG5uIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGZkIDx0eXBlIDc3PikgLm5ldC53cml0ZVRvIChwIDx0eXBlIDgzIFtdIDx0eXBlIC0yMD4+LCBzYSA8dHlwZSA1Mj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGZkIDx0eXBlIDc3PikgLm5ldC53cml0ZU1zZyAocCA8dHlwZSA4NCBbXSA8dHlwZSAtMjA+Piwgb29iIDx0eXBlIDg1IFtdIDx0eXBlIC0yMD4+LCBzYSA8dHlwZSA1Mj4pIChuIDx0eXBlIC0xMT4sIG9vYm4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZmQgPHR5cGUgNzc+KSAubmV0LmFjY2VwdCAoKSAobmV0ZmQgPHR5cGUgNzc+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQuZHVwICgpIChmIDx0eXBlIDg2ICo8dHlwZSA4NyAib3MuRmlsZSIgPHR5cGUgODggc3RydWN0IHsgPyA8dHlwZSA4OSAqPHR5cGUgOTAgIi5vcy5maWxlIiA8dHlwZSA5MSBzdHJ1Y3QgeyAub3MuZmQgPHR5cGUgLTExPjsgLm9zLm5hbWUgPHR5cGUgLTE2PjsgLm9zLmRpcmluZm8gPHR5cGUgOTIgKjx0eXBlIDkzICIub3MuZGlySW5mbyIgPHR5cGUgOTQgc3RydWN0IHsgLm9zLmJ1ZiA8dHlwZSA5NSBbXSA8dHlwZSAtMjA+PjsgLm9zLmRpciA8dHlwZSA5NiAqPHR5cGUgOTcgInN5c2NhbGwuRElSIiA8dHlwZSA5OCAiLnN5c2NhbGwuX0RJUiIgPHR5cGUgOTkgc3RydWN0IHsgfT4+Pj47IH0+Pj47IC5vcy5uZXBpcGUgPHR5cGUgLTM+OyB9PgogZnVuYyAoZmlsZSA8dHlwZSAxMDAgKjx0eXBlIDkwPj4pIC5vcy5jbG9zZSAoKSA8dHlwZSAtMTk+Owo+PjsgfT4KIGZ1bmMgKGYgPHR5cGUgMTAxICo8dHlwZSA4Nz4+KSBXcml0ZUF0IChiIDx0eXBlIDEwMiBbXSA8dHlwZSAtMjA+Piwgb2ZmIDx0eXBlIC00PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDE+KSBSZWFkZGlybmFtZXMgKG4gPHR5cGUgLTExPikgKG5hbWVzIDx0eXBlIDEwMyBbXSA8dHlwZSAtMTY+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDE+KSBSZWFkIChiIDx0eXBlIDEwNCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDE+KSBOYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jIChmIDx0eXBlIDEwMT4pIENob3duICh1aWQgPHR5cGUgLTExPiwgZ2lkIDx0eXBlIC0xMT4pIDx0eXBlIC0xOT47CiBmdW5jIChmIDx0eXBlIDEwMT4pIFJlYWRkaXIgKG4gPHR5cGUgLTExPikgKGZpIDx0eXBlIDEwNSBbXSA8dHlwZSAxMDYgIm9zLkZpbGVJbmZvIiA8dHlwZSAxMDcgaW50ZXJmYWNlIHsgTmFtZSAoKSA8dHlwZSAtMTY+OyBTaXplICgpIDx0eXBlIC00PjsgTW9kZSAoKSA8dHlwZSAxMDggIm9zLkZpbGVNb2RlIiA8dHlwZSAtNz4KIGZ1bmMgKG0gPHR5cGUgMTA4PikgUGVybSAoKSA8dHlwZSAxMDg+OwogZnVuYyAobSA8dHlwZSAxMDg+KSBJc1JlZ3VsYXIgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKG0gPHR5cGUgMTA4PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChtIDx0eXBlIDEwOD4pIElzRGlyICgpIDx0eXBlIC0xNT47Cj47IE1vZFRpbWUgKCkgPHR5cGUgMTI+OyBJc0RpciAoKSA8dHlwZSAtMTU+OyBTeXMgKCkgPHR5cGUgMTA5IGludGVyZmFjZSB7IH0+OyB9Pj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwMT4pIENoZGlyICgpIDx0eXBlIC0xOT47CiBmdW5jIChmIDx0eXBlIDEwMT4pIC5vcy5yZWFkIChiIDx0eXBlIDExMCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDE+KSBTZWVrIChvZmZzZXQgPHR5cGUgLTQ+LCB3aGVuY2UgPHR5cGUgLTExPikgKHJldCA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMTAxPikgLm9zLndyaXRlIChiIDx0eXBlIDExMSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDE+KSBTdGF0ICgpIChmaSA8dHlwZSAxMDY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwMT4pIFdyaXRlU3RyaW5nIChzIDx0eXBlIC0xNj4pIChyZXQgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDE+KSAub3MucHJlYWQgKGIgPHR5cGUgMTEyIFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwMT4pIFJlYWRBdCAoYiA8dHlwZSAxMTMgW10gPHR5cGUgLTIwPj4sIG9mZiA8dHlwZSAtND4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMTAxPikgV3JpdGUgKGIgPHR5cGUgMTE0IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwMT4pIFN5bmMgKCkgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMTAxPikgRmQgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKGZpbGUgPHR5cGUgMTAxPikgLm9zLnJlYWRkaXJuYW1lcyAobiA8dHlwZSAtMTE+KSAobmFtZXMgPHR5cGUgMTE1IFtdIDx0eXBlIC0xNj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwMT4pIENobW9kIChtb2RlIDx0eXBlIDEwOD4pIDx0eXBlIC0xOT47CiBmdW5jIChmIDx0eXBlIDEwMT4pIFRydW5jYXRlIChzaXplIDx0eXBlIC00PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGYgPHR5cGUgMTAxPikgLm9zLnNlZWsgKG9mZnNldCA8dHlwZSAtND4sIHdoZW5jZSA8dHlwZSAtMTE+KSAocmV0IDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDE+KSAub3MucHdyaXRlIChiIDx0eXBlIDExNiBbXSA8dHlwZSAtMjA+Piwgb2ZmIDx0eXBlIC00PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDE+KSAub3MucmVhZGRpciAobiA8dHlwZSAtMTE+KSAoZmkgPHR5cGUgMTE3IFtdIDx0eXBlIDEwNj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwMT4pIENsb3NlICgpIDx0eXBlIC0xOT47Cj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQuc2V0RGVhZGxpbmUgKHQgPHR5cGUgMTI+KSA8dHlwZSAtMTk+OwogZnVuYyAoZmQgPHR5cGUgNzc+KSAubmV0LnNldFJlYWREZWFkbGluZSAodCA8dHlwZSAxMj4pIDx0eXBlIC0xOT47CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQuc2V0V3JpdGVEZWFkbGluZSAodCA8dHlwZSAxMj4pIDx0eXBlIC0xOT47CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQuYWRkckZ1bmMgKCkgPHR5cGUgMTE4ICg/IDx0eXBlIDUyPikgPHR5cGUgMT4+OwogZnVuYyAoZmQgPHR5cGUgNzc+KSAubmV0LmRpYWwgKGxhZGRyIDx0eXBlIDExOSAiLm5ldC5zb2NrYWRkciIgPHR5cGUgMTIwIGludGVyZmFjZSB7ID8gPHR5cGUgMT47ID8gPHR5cGUgMTIxICIubmV0Lm5ldGFkZHIiIDx0eXBlIDEyMiBpbnRlcmZhY2UgeyAubmV0LnRvQWRkciAoKSA8dHlwZSAxPjsgfT4+OyAubmV0LmZhbWlseSAoKSA8dHlwZSAtMTE+OyAubmV0LmlzV2lsZGNhcmQgKCkgPHR5cGUgLTE1PjsgLm5ldC5zb2NrYWRkciAoZmFtaWx5IDx0eXBlIC0xMT4pICg/IDx0eXBlIDUyPiwgPyA8dHlwZSAtMTk+KTsgfT4+LCByYWRkciA8dHlwZSAxMTk+LCBkZWFkbGluZSA8dHlwZSAxMj4pIDx0eXBlIC0xOT47CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQubGlzdGVuU3RyZWFtIChsYWRkciA8dHlwZSAxMTk+LCBiYWNrbG9nIDx0eXBlIC0xMT4pIDx0eXBlIC0xOT47CiBmdW5jIChmZCA8dHlwZSA3Nz4pIC5uZXQubGlzdGVuRGF0YWdyYW0gKGxhZGRyIDx0eXBlIDExOT4pIDx0eXBlIC0xOT47Cj4+OyB9PgogZnVuYyAoYyA8dHlwZSAxMjMgKjx0eXBlIDY2Pj4pIC5uZXQub2sgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGMgPHR5cGUgMTIzPikgUmVhZCAoYiA8dHlwZSAxMjQgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDEyMz4pIFdyaXRlIChiIDx0eXBlIDEyNSBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTIzPikgQ2xvc2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTIzPikgTG9jYWxBZGRyICgpIDx0eXBlIDE+OwogZnVuYyAoYyA8dHlwZSAxMjM+KSBSZW1vdGVBZGRyICgpIDx0eXBlIDE+OwogZnVuYyAoYyA8dHlwZSAxMjM+KSBTZXREZWFkbGluZSAodCA8dHlwZSAxMj4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDEyMz4pIFNldFJlYWREZWFkbGluZSAodCA8dHlwZSAxMj4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDEyMz4pIFNldFdyaXRlRGVhZGxpbmUgKHQgPHR5cGUgMTI+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAxMjM+KSBTZXRSZWFkQnVmZmVyIChieXRlcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAxMjM+KSBTZXRXcml0ZUJ1ZmZlciAoYnl0ZXMgPHR5cGUgLTExPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTIzPikgRmlsZSAoKSAoZiA8dHlwZSA4Nj4sIGVyciA8dHlwZSAtMTk+KTsKPjsgfT4KIGZ1bmMgKGMgPHR5cGUgMTI2ICo8dHlwZSA2ND4+KSBSZWFkRnJvbUlQIChiIDx0eXBlIDEyNyBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgLTExPiwgPyA8dHlwZSA0Mz4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDEyNj4pIFJlYWRGcm9tIChiIDx0eXBlIDEyOCBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgLTExPiwgPyA8dHlwZSAxPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTI2PikgUmVhZE1zZ0lQIChiIDx0eXBlIDEyOSBbXSA8dHlwZSAtMjA+Piwgb29iIDx0eXBlIDEyOT4pIChuIDx0eXBlIC0xMT4sIG9vYm4gPHR5cGUgLTExPiwgZmxhZ3MgPHR5cGUgLTExPiwgYWRkciA8dHlwZSA0Mz4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTI2PikgV3JpdGVUb0lQIChiIDx0eXBlIDEzMCBbXSA8dHlwZSAtMjA+PiwgYWRkciA8dHlwZSA0Mz4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDEyNj4pIFdyaXRlVG8gKGIgPHR5cGUgMTMxIFtdIDx0eXBlIC0yMD4+LCBhZGRyIDx0eXBlIDE+KSAoPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxMjY+KSBXcml0ZU1zZ0lQIChiIDx0eXBlIDEzMiBbXSA8dHlwZSAtMjA+Piwgb29iIDx0eXBlIDEzMj4sIGFkZHIgPHR5cGUgNDM+KSAobiA8dHlwZSAtMTE+LCBvb2JuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKPj4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgRGlhbFRDUCAobmV0IDx0eXBlIC0xNj4sIGxhZGRyIDx0eXBlIDEzMyAqPHR5cGUgMTM0ICJUQ1BBZGRyIiA8dHlwZSAxMzUgc3RydWN0IHsgSVAgPHR5cGUgNDY+OyBQb3J0IDx0eXBlIC0xMT47IFpvbmUgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGEgPHR5cGUgMTM2ICo8dHlwZSAxMzQ+PikgTmV0d29yayAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYSA8dHlwZSAxMzY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGEgPHR5cGUgMTM2PikgLm5ldC50b0FkZHIgKCkgPHR5cGUgMT47CiBmdW5jIChhIDx0eXBlIDEzNj4pIC5uZXQuZmFtaWx5ICgpIDx0eXBlIC0xMT47CiBmdW5jIChhIDx0eXBlIDEzNj4pIC5uZXQuaXNXaWxkY2FyZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoYSA8dHlwZSAxMzY+KSAubmV0LnNvY2thZGRyIChmYW1pbHkgPHR5cGUgLTExPikgKD8gPHR5cGUgNTI+LCA/IDx0eXBlIC0xOT4pOwo+PiwgcmFkZHIgPHR5cGUgMTMzPikgKD8gPHR5cGUgMTM3ICo8dHlwZSAxMzggIlRDUENvbm4iIDx0eXBlIDEzOSBzdHJ1Y3QgeyA/IDx0eXBlIDY2PjsgfT4KIGZ1bmMgKGMgPHR5cGUgMTQwICo8dHlwZSAxMzg+PikgLm5ldC5yZWFkRE5TUmVzcG9uc2UgKCkgKD8gPHR5cGUgMTQxICo8dHlwZSAxNDIgIi5uZXQuZG5zTXNnIiA8dHlwZSAxNDMgc3RydWN0IHsgPyA8dHlwZSAxNDQgIi5uZXQuZG5zTXNnSGRyIiA8dHlwZSAxNDUgc3RydWN0IHsgLm5ldC5pZCA8dHlwZSAtNj47IC5uZXQucmVzcG9uc2UgPHR5cGUgLTE1PjsgLm5ldC5vcGNvZGUgPHR5cGUgLTExPjsgLm5ldC5hdXRob3JpdGF0aXZlIDx0eXBlIC0xNT47IC5uZXQudHJ1bmNhdGVkIDx0eXBlIC0xNT47IC5uZXQucmVjdXJzaW9uX2Rlc2lyZWQgPHR5cGUgLTE1PjsgLm5ldC5yZWN1cnNpb25fYXZhaWxhYmxlIDx0eXBlIC0xNT47IC5uZXQucmNvZGUgPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGggPHR5cGUgMTQ2ICo8dHlwZSAxNDQ+PikgV2FsayAoZiA8dHlwZSAxNDcgKHYgPHR5cGUgMTQ4IGludGVyZmFjZSB7IH0+LCBuYW1lIDx0eXBlIC0xNj4sIHRhZyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgPHR5cGUgLTE1PjsKPjsgLm5ldC5xdWVzdGlvbiA8dHlwZSAxNDkgW10gPHR5cGUgMTUwICIubmV0LmRuc1F1ZXN0aW9uIiA8dHlwZSAxNTEgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+ICJuZXQ6XCJkb21haW4tbmFtZVwiIjsgUXR5cGUgPHR5cGUgLTY+OyBRY2xhc3MgPHR5cGUgLTY+OyB9PgogZnVuYyAocSA8dHlwZSAxNTIgKjx0eXBlIDE1MD4+KSBXYWxrIChmIDx0eXBlIDE1MyAodiA8dHlwZSAxNTQgaW50ZXJmYWNlIHsgfT4sIG5hbWUgPHR5cGUgLTE2PiwgdGFnIDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTU+Owo+PjsgLm5ldC5hbnN3ZXIgPHR5cGUgMTU1IFtdIDx0eXBlIDE1NiAiLm5ldC5kbnNSUiIgPHR5cGUgMTU3IGludGVyZmFjZSB7ID8gPHR5cGUgMTU4ICIubmV0LmRuc1N0cnVjdCIgPHR5cGUgMTU5IGludGVyZmFjZSB7IFdhbGsgKGYgPHR5cGUgMTYwICh2IDx0eXBlIDE2MSBpbnRlcmZhY2UgeyB9PiwgbmFtZSA8dHlwZSAtMTY+LCB0YWcgPHR5cGUgLTE2PikgKG9rIDx0eXBlIC0xNT4pPikgKG9rIDx0eXBlIC0xNT4pOyB9Pj47IEhlYWRlciAoKSA8dHlwZSAxNjIgKjx0eXBlIDE2MyAiLm5ldC5kbnNSUl9IZWFkZXIiIDx0eXBlIDE2NCBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj4gIm5ldDpcImRvbWFpbi1uYW1lXCIiOyBScnR5cGUgPHR5cGUgLTY+OyBDbGFzcyA8dHlwZSAtNj47IFR0bCA8dHlwZSAtNz47IFJkbGVuZ3RoIDx0eXBlIC02PjsgfT4KIGZ1bmMgKGggPHR5cGUgMTY1ICo8dHlwZSAxNjM+PikgSGVhZGVyICgpIDx0eXBlIDE2NT47CiBmdW5jIChoIDx0eXBlIDE2NT4pIFdhbGsgKGYgPHR5cGUgMTY2ICh2IDx0eXBlIDE2NyBpbnRlcmZhY2UgeyB9PiwgbmFtZSA8dHlwZSAtMTY+LCB0YWcgPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pIDx0eXBlIC0xNT47Cj4+OyB9Pj4+OyAubmV0Lm5zIDx0eXBlIDE2OCBbXSA8dHlwZSAxNTY+PjsgLm5ldC5leHRyYSA8dHlwZSAxNjkgW10gPHR5cGUgMTU2Pj47IH0+CiBmdW5jIChkbnMgPHR5cGUgMTcwICo8dHlwZSAxNDI+PikgUGFjayAoKSAobXNnIDx0eXBlIDE3MSBbXSA8dHlwZSAtMjA+Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jIChkbnMgPHR5cGUgMTcwPikgVW5wYWNrIChtc2cgPHR5cGUgMTcyIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+OwogZnVuYyAoZG5zIDx0eXBlIDE3MD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTczICo8dHlwZSAxMzg+PikgLm5ldC53cml0ZUROU1F1ZXJ5IChtc2cgPHR5cGUgMTc0ICo8dHlwZSAxNDI+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTc1ICo8dHlwZSAxMzg+PikgUmVhZEZyb20gKHIgPHR5cGUgMTc2ICJpby5SZWFkZXIiIDx0eXBlIDE3NyBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDE3OCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4pICg/IDx0eXBlIC00PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTc1PikgQ2xvc2VSZWFkICgpIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDE3NT4pIENsb3NlV3JpdGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTc1PikgU2V0TGluZ2VyIChzZWMgPHR5cGUgLTExPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTc1PikgU2V0S2VlcEFsaXZlIChrZWVwYWxpdmUgPHR5cGUgLTE1PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTc1PikgU2V0S2VlcEFsaXZlUGVyaW9kIChkIDx0eXBlIDMyPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTc1PikgU2V0Tm9EZWxheSAobm9EZWxheSA8dHlwZSAtMTU+KSA8dHlwZSAtMTk+Owo+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBEaWFsVGltZW91dCAobmV0d29yayA8dHlwZSAtMTY+LCBhZGRyZXNzIDx0eXBlIC0xNj4sIHRpbWVvdXQgPHR5cGUgMzI+KSAoPyA8dHlwZSA4PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBEaWFsVURQIChuZXQgPHR5cGUgLTE2PiwgbGFkZHIgPHR5cGUgMTc5ICo8dHlwZSAxODAgIlVEUEFkZHIiIDx0eXBlIDE4MSBzdHJ1Y3QgeyBJUCA8dHlwZSA0Nj47IFBvcnQgPHR5cGUgLTExPjsgWm9uZSA8dHlwZSAtMTY+OyB9PgogZnVuYyAoYSA8dHlwZSAxODIgKjx0eXBlIDE4MD4+KSBOZXR3b3JrICgpIDx0eXBlIC0xNj47CiBmdW5jIChhIDx0eXBlIDE4Mj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYSA8dHlwZSAxODI+KSAubmV0LnRvQWRkciAoKSA8dHlwZSAxPjsKIGZ1bmMgKGEgPHR5cGUgMTgyPikgLm5ldC5mYW1pbHkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGEgPHR5cGUgMTgyPikgLm5ldC5pc1dpbGRjYXJkICgpIDx0eXBlIC0xNT47CiBmdW5jIChhIDx0eXBlIDE4Mj4pIC5uZXQuc29ja2FkZHIgKGZhbWlseSA8dHlwZSAtMTE+KSAoPyA8dHlwZSA1Mj4sID8gPHR5cGUgLTE5Pik7Cj4+LCByYWRkciA8dHlwZSAxNzk+KSAoPyA8dHlwZSAxODMgKjx0eXBlIDE4NCAiVURQQ29ubiIgPHR5cGUgMTg1IHN0cnVjdCB7ID8gPHR5cGUgNjY+OyB9PgogZnVuYyAoYyA8dHlwZSAxODYgKjx0eXBlIDE4ND4+KSAubmV0LnJlYWRETlNSZXNwb25zZSAoKSAoPyA8dHlwZSAxODcgKjx0eXBlIDE0Mj4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxODggKjx0eXBlIDE4ND4+KSAubmV0LndyaXRlRE5TUXVlcnkgKG1zZyA8dHlwZSAxODkgKjx0eXBlIDE0Mj4+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAxOTAgKjx0eXBlIDE4ND4+KSBSZWFkRnJvbVVEUCAoYiA8dHlwZSAxOTEgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGFkZHIgPHR5cGUgMTc5PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxOTA+KSBSZWFkRnJvbSAoYiA8dHlwZSAxOTIgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5MD4pIFJlYWRNc2dVRFAgKGIgPHR5cGUgMTkzIFtdIDx0eXBlIC0yMD4+LCBvb2IgPHR5cGUgMTkzPikgKG4gPHR5cGUgLTExPiwgb29ibiA8dHlwZSAtMTE+LCBmbGFncyA8dHlwZSAtMTE+LCBhZGRyIDx0eXBlIDE3OT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTkwPikgV3JpdGVUb1VEUCAoYiA8dHlwZSAxOTQgW10gPHR5cGUgLTIwPj4sIGFkZHIgPHR5cGUgMTc5PikgKD8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTkwPikgV3JpdGVUbyAoYiA8dHlwZSAxOTUgW10gPHR5cGUgLTIwPj4sIGFkZHIgPHR5cGUgMT4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5MD4pIFdyaXRlTXNnVURQIChiIDx0eXBlIDE5NiBbXSA8dHlwZSAtMjA+Piwgb29iIDx0eXBlIDE5Nj4sIGFkZHIgPHR5cGUgMTc5PikgKG4gPHR5cGUgLTExPiwgb29ibiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7Cj4+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIERpYWxVbml4IChuZXQgPHR5cGUgLTE2PiwgbGFkZHIgPHR5cGUgMTk3ICo8dHlwZSAxOTggIlVuaXhBZGRyIiA8dHlwZSAxOTkgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBOZXQgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGEgPHR5cGUgMjAwICo8dHlwZSAxOTg+PikgTmV0d29yayAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYSA8dHlwZSAyMDA+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGEgPHR5cGUgMjAwPikgLm5ldC50b0FkZHIgKCkgPHR5cGUgMT47CiBmdW5jIChhIDx0eXBlIDIwMD4pIC5uZXQuZmFtaWx5ICgpIDx0eXBlIC0xMT47CiBmdW5jIChhIDx0eXBlIDIwMD4pIC5uZXQuaXNXaWxkY2FyZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoYSA8dHlwZSAyMDA+KSAubmV0LnNvY2thZGRyIChmYW1pbHkgPHR5cGUgLTExPikgKD8gPHR5cGUgNTI+LCA/IDx0eXBlIC0xOT4pOwo+PiwgcmFkZHIgPHR5cGUgMTk3PikgKD8gPHR5cGUgMjAxICo8dHlwZSAyMDIgIlVuaXhDb25uIiA8dHlwZSAyMDMgc3RydWN0IHsgPyA8dHlwZSA2Nj47IH0+CiBmdW5jIChjIDx0eXBlIDIwNCAqPHR5cGUgMjAyPj4pIFJlYWRGcm9tVW5peCAoYiA8dHlwZSAyMDUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGFkZHIgPHR5cGUgMTk3PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMDQ+KSBSZWFkRnJvbSAoYiA8dHlwZSAyMDYgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDIwND4pIFJlYWRNc2dVbml4IChiIDx0eXBlIDIwNyBbXSA8dHlwZSAtMjA+Piwgb29iIDx0eXBlIDIwNz4pIChuIDx0eXBlIC0xMT4sIG9vYm4gPHR5cGUgLTExPiwgZmxhZ3MgPHR5cGUgLTExPiwgYWRkciA8dHlwZSAxOTc+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDIwND4pIFdyaXRlVG9Vbml4IChiIDx0eXBlIDIwOCBbXSA8dHlwZSAtMjA+PiwgYWRkciA8dHlwZSAxOTc+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDIwND4pIFdyaXRlVG8gKGIgPHR5cGUgMjA5IFtdIDx0eXBlIC0yMD4+LCBhZGRyIDx0eXBlIDE+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDIwND4pIFdyaXRlTXNnVW5peCAoYiA8dHlwZSAyMTAgW10gPHR5cGUgLTIwPj4sIG9vYiA8dHlwZSAyMTA+LCBhZGRyIDx0eXBlIDE5Nz4pIChuIDx0eXBlIC0xMT4sIG9vYm4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMDQ+KSBDbG9zZVJlYWQgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjA0PikgQ2xvc2VXcml0ZSAoKSA8dHlwZSAtMTk+Owo+PiwgPyA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSAyMTEgIkRpYWxlciIgPHR5cGUgMjEyIHN0cnVjdCB7IFRpbWVvdXQgPHR5cGUgMzI+OyBEZWFkbGluZSA8dHlwZSAxMj47IExvY2FsQWRkciA8dHlwZSAxPjsgRHVhbFN0YWNrIDx0eXBlIC0xNT47IEtlZXBBbGl2ZSA8dHlwZSAzMj47IH0+CiBmdW5jIChkIDx0eXBlIDIxMyAqPHR5cGUgMjExPj4pIC5uZXQuZGVhZGxpbmUgKCkgPHR5cGUgMTI+OwogZnVuYyAoZCA8dHlwZSAyMTM+KSBEaWFsIChuZXR3b3JrIDx0eXBlIC0xNj4sIGFkZHJlc3MgPHR5cGUgLTE2PikgKD8gPHR5cGUgOD4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChkIDx0eXBlIDIxMz4pIC5uZXQuZGlhbEROUyAobmV0d29yayA8dHlwZSAtMTY+LCBzZXJ2ZXIgPHR5cGUgLTE2PikgKD8gPHR5cGUgMjE0ICIubmV0LmRuc0Nvbm4iIDx0eXBlIDIxNSBpbnRlcmZhY2UgeyA/IDx0eXBlIDg+OyAubmV0LnJlYWRETlNSZXNwb25zZSAoKSAoPyA8dHlwZSAyMTYgKjx0eXBlIDE0Mj4+LCA/IDx0eXBlIC0xOT4pOyAubmV0LndyaXRlRE5TUXVlcnkgKD8gPHR5cGUgMjE3ICo8dHlwZSAxNDI+PikgPHR5cGUgLTE5PjsgfT4+LCA/IDx0eXBlIC0xOT4pOwo+Owp2YXIgRXJyV3JpdGVUb0Nvbm5lY3RlZCA8dHlwZSAtMTk+Owp0eXBlIDx0eXBlIDIxOCAiRXJyb3IiIDx0eXBlIDIxOSBpbnRlcmZhY2UgeyA/IDx0eXBlIC0xOT47IFRpbWVvdXQgKCkgPHR5cGUgLTE1PjsgVGVtcG9yYXJ5ICgpIDx0eXBlIC0xNT47IH0+PjsKZnVuYyBGaWxlQ29ubiAoZiA8dHlwZSA4Nj4pIChjIDx0eXBlIDg+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgRmlsZUxpc3RlbmVyIChmIDx0eXBlIDg2PikgKGwgPHR5cGUgMjIwICJMaXN0ZW5lciIgPHR5cGUgMjIxIGludGVyZmFjZSB7IEFjY2VwdCAoKSAoYyA8dHlwZSA4PiwgZXJyIDx0eXBlIC0xOT4pOyBDbG9zZSAoKSA8dHlwZSAtMTk+OyBBZGRyICgpIDx0eXBlIDE+OyB9Pj4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBGaWxlUGFja2V0Q29ubiAoZiA8dHlwZSA4Nj4pIChjIDx0eXBlIDIyMiAiUGFja2V0Q29ubiIgPHR5cGUgMjIzIGludGVyZmFjZSB7IFJlYWRGcm9tIChiIDx0eXBlIDIyNCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgYWRkciA8dHlwZSAxPiwgZXJyIDx0eXBlIC0xOT4pOyBXcml0ZVRvIChiIDx0eXBlIDIyNSBbXSA8dHlwZSAtMjA+PiwgYWRkciA8dHlwZSAxPikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBDbG9zZSAoKSA8dHlwZSAtMTk+OyBMb2NhbEFkZHIgKCkgPHR5cGUgMT47IFNldERlYWRsaW5lICh0IDx0eXBlIDEyPikgPHR5cGUgLTE5PjsgU2V0UmVhZERlYWRsaW5lICh0IDx0eXBlIDEyPikgPHR5cGUgLTE5PjsgU2V0V3JpdGVEZWFkbGluZSAodCA8dHlwZSAxMj4pIDx0eXBlIC0xOT47IH0+PiwgZXJyIDx0eXBlIC0xOT4pOwpjb25zdCBGbGFnQnJvYWRjYXN0IDx0eXBlIDIyNiAiRmxhZ3MiIDx0eXBlIC0xMj4KIGZ1bmMgKGYgPHR5cGUgMjI2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4gPSAyIDsKY29uc3QgRmxhZ0xvb3BiYWNrIDx0eXBlIDIyNj4gPSA0IDsKY29uc3QgRmxhZ011bHRpY2FzdCA8dHlwZSAyMjY+ID0gMTYgOwpjb25zdCBGbGFnUG9pbnRUb1BvaW50IDx0eXBlIDIyNj4gPSA4IDsKY29uc3QgRmxhZ1VwIDx0eXBlIDIyNj4gPSAxIDsKdHlwZSA8dHlwZSAyMjY+Owp0eXBlIDx0eXBlIDIyNyAiSGFyZHdhcmVBZGRyIiA8dHlwZSAyMjggW10gPHR5cGUgLTIwPj4KIGZ1bmMgKGEgPHR5cGUgMjI3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgNDY+Owp0eXBlIDx0eXBlIDQ0PjsKdHlwZSA8dHlwZSA2ND47CnR5cGUgPHR5cGUgNj47CnR5cGUgPHR5cGUgMjI5ICJJUE5ldCIgPHR5cGUgMjMwIHN0cnVjdCB7IElQIDx0eXBlIDQ2PjsgTWFzayA8dHlwZSA2PjsgfT4KIGZ1bmMgKG4gPHR5cGUgMjMxICo8dHlwZSAyMjk+PikgQ29udGFpbnMgKGlwIDx0eXBlIDQ2PikgPHR5cGUgLTE1PjsKIGZ1bmMgKG4gPHR5cGUgMjMxPikgTmV0d29yayAoKSA8dHlwZSAtMTY+OwogZnVuYyAobiA8dHlwZSAyMzE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKZnVuYyBJUHY0IChhIDx0eXBlIC0yMD4sIGIgPHR5cGUgLTIwPiwgYyA8dHlwZSAtMjA+LCBkIDx0eXBlIC0yMD4pIDx0eXBlIDQ2PjsKZnVuYyBJUHY0TWFzayAoYSA8dHlwZSAtMjA+LCBiIDx0eXBlIC0yMD4sIGMgPHR5cGUgLTIwPiwgZCA8dHlwZSAtMjA+KSA8dHlwZSA2PjsKdmFyIElQdjRhbGxyb3V0ZXIgPHR5cGUgNDY+Owp2YXIgSVB2NGFsbHN5cyA8dHlwZSA0Nj47CnZhciBJUHY0YmNhc3QgPHR5cGUgNDY+Owpjb25zdCBJUHY0bGVuID0gNCA7CnZhciBJUHY0emVybyA8dHlwZSA0Nj47CnZhciBJUHY2aW50ZXJmYWNlbG9jYWxhbGxub2RlcyA8dHlwZSA0Nj47CmNvbnN0IElQdjZsZW4gPSAxNiA7CnZhciBJUHY2bGlua2xvY2FsYWxsbm9kZXMgPHR5cGUgNDY+Owp2YXIgSVB2Nmxpbmtsb2NhbGFsbHJvdXRlcnMgPHR5cGUgNDY+Owp2YXIgSVB2Nmxvb3BiYWNrIDx0eXBlIDQ2PjsKdmFyIElQdjZ1bnNwZWNpZmllZCA8dHlwZSA0Nj47CnZhciBJUHY2emVybyA8dHlwZSA0Nj47CnR5cGUgPHR5cGUgMjMyICJJbnRlcmZhY2UiIDx0eXBlIDIzMyBzdHJ1Y3QgeyBJbmRleCA8dHlwZSAtMTE+OyBNVFUgPHR5cGUgLTExPjsgTmFtZSA8dHlwZSAtMTY+OyBIYXJkd2FyZUFkZHIgPHR5cGUgMjI3PjsgRmxhZ3MgPHR5cGUgMjI2PjsgfT4KIGZ1bmMgKGlmaSA8dHlwZSAyMzQgKjx0eXBlIDIzMj4+KSBBZGRycyAoKSAoPyA8dHlwZSAyMzUgW10gPHR5cGUgMT4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoaWZpIDx0eXBlIDIzND4pIE11bHRpY2FzdEFkZHJzICgpICg/IDx0eXBlIDIzNiBbXSA8dHlwZSAxPj4sID8gPHR5cGUgLTE5Pik7Cj47CmZ1bmMgSW50ZXJmYWNlQWRkcnMgKCkgKD8gPHR5cGUgMjM3IFtdIDx0eXBlIDE+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBJbnRlcmZhY2VCeUluZGV4IChpbmRleCA8dHlwZSAtMTE+KSAoPyA8dHlwZSAyMzQ+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIEludGVyZmFjZUJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSAyMzQ+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIEludGVyZmFjZXMgKCkgKD8gPHR5cGUgMjM4IFtdIDx0eXBlIDIzMj4+LCA/IDx0eXBlIC0xOT4pOwp0eXBlIDx0eXBlIDIzOSAiSW52YWxpZEFkZHJFcnJvciIgPHR5cGUgLTE2PgogZnVuYyAoZSA8dHlwZSAyMzk+KSBFcnJvciAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZSA8dHlwZSAyMzk+KSBUaW1lb3V0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChlIDx0eXBlIDIzOT4pIFRlbXBvcmFyeSAoKSA8dHlwZSAtMTU+Owo+OwpmdW5jIEpvaW5Ib3N0UG9ydCAoaG9zdCA8dHlwZSAtMTY+LCBwb3J0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CmZ1bmMgTGlzdGVuIChuZXQgPHR5cGUgLTE2PiwgbGFkZHIgPHR5cGUgLTE2PikgKD8gPHR5cGUgMjIwPiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBMaXN0ZW5JUCAobmV0UHJvdG8gPHR5cGUgLTE2PiwgbGFkZHIgPHR5cGUgNDM+KSAoPyA8dHlwZSA2Mz4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgTGlzdGVuTXVsdGljYXN0VURQIChuZXQgPHR5cGUgLTE2PiwgaWZpIDx0eXBlIDIzND4sIGdhZGRyIDx0eXBlIDE3OT4pICg/IDx0eXBlIDE4Mz4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgTGlzdGVuUGFja2V0IChuZXQgPHR5cGUgLTE2PiwgbGFkZHIgPHR5cGUgLTE2PikgKD8gPHR5cGUgMjIyPiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBMaXN0ZW5UQ1AgKG5ldCA8dHlwZSAtMTY+LCBsYWRkciA8dHlwZSAxMzM+KSAoPyA8dHlwZSAyNDAgKjx0eXBlIDI0MSAiVENQTGlzdGVuZXIiIDx0eXBlIDI0MiBzdHJ1Y3QgeyAubmV0LmZkIDx0eXBlIDY4PjsgfT4KIGZ1bmMgKGwgPHR5cGUgMjQzICo8dHlwZSAyNDE+PikgQWNjZXB0VENQICgpICg/IDx0eXBlIDEzNz4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChsIDx0eXBlIDI0Mz4pIEFjY2VwdCAoKSAoPyA8dHlwZSA4PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGwgPHR5cGUgMjQzPikgQ2xvc2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGwgPHR5cGUgMjQzPikgQWRkciAoKSA8dHlwZSAxPjsKIGZ1bmMgKGwgPHR5cGUgMjQzPikgU2V0RGVhZGxpbmUgKHQgPHR5cGUgMTI+KSA8dHlwZSAtMTk+OwogZnVuYyAobCA8dHlwZSAyNDM+KSBGaWxlICgpIChmIDx0eXBlIDg2PiwgZXJyIDx0eXBlIC0xOT4pOwo+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBMaXN0ZW5VRFAgKG5ldCA8dHlwZSAtMTY+LCBsYWRkciA8dHlwZSAxNzk+KSAoPyA8dHlwZSAxODM+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIExpc3RlblVuaXggKG5ldCA8dHlwZSAtMTY+LCBsYWRkciA8dHlwZSAxOTc+KSAoPyA8dHlwZSAyNDQgKjx0eXBlIDI0NSAiVW5peExpc3RlbmVyIiA8dHlwZSAyNDYgc3RydWN0IHsgLm5ldC5mZCA8dHlwZSA2OD47IC5uZXQucGF0aCA8dHlwZSAtMTY+OyB9PgogZnVuYyAobCA8dHlwZSAyNDcgKjx0eXBlIDI0NT4+KSBBY2NlcHRVbml4ICgpICg/IDx0eXBlIDIwMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChsIDx0eXBlIDI0Nz4pIEFjY2VwdCAoKSAoYyA8dHlwZSA4PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAobCA8dHlwZSAyNDc+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAobCA8dHlwZSAyNDc+KSBBZGRyICgpIDx0eXBlIDE+OwogZnVuYyAobCA8dHlwZSAyNDc+KSBTZXREZWFkbGluZSAodCA8dHlwZSAxMj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChsIDx0eXBlIDI0Nz4pIEZpbGUgKCkgKGYgPHR5cGUgODY+LCBlcnIgPHR5cGUgLTE5Pik7Cj4+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIExpc3RlblVuaXhncmFtIChuZXQgPHR5cGUgLTE2PiwgbGFkZHIgPHR5cGUgMTk3PikgKD8gPHR5cGUgMjAxPiwgPyA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSAyMjA+OwpmdW5jIExvb2t1cEFkZHIgKGFkZHIgPHR5cGUgLTE2PikgKG5hbWUgPHR5cGUgMjQ4IFtdIDx0eXBlIC0xNj4+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgTG9va3VwQ05BTUUgKG5hbWUgPHR5cGUgLTE2PikgKGNuYW1lIDx0eXBlIC0xNj4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBMb29rdXBIb3N0IChob3N0IDx0eXBlIC0xNj4pIChhZGRycyA8dHlwZSAyNDkgW10gPHR5cGUgLTE2Pj4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBMb29rdXBJUCAoaG9zdCA8dHlwZSAtMTY+KSAoYWRkcnMgPHR5cGUgMjUwIFtdIDx0eXBlIDQ2Pj4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBMb29rdXBNWCAobmFtZSA8dHlwZSAtMTY+KSAobXggPHR5cGUgMjUxIFtdIDx0eXBlIDI1MiAqPHR5cGUgMjUzICJNWCIgPHR5cGUgMjU0IHN0cnVjdCB7IEhvc3QgPHR5cGUgLTE2PjsgUHJlZiA8dHlwZSAtNj47IH0+Pj4+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgTG9va3VwTlMgKG5hbWUgPHR5cGUgLTE2PikgKG5zIDx0eXBlIDI1NSBbXSA8dHlwZSAyNTYgKjx0eXBlIDI1NyAiTlMiIDx0eXBlIDI1OCBzdHJ1Y3QgeyBIb3N0IDx0eXBlIC0xNj47IH0+Pj4+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgTG9va3VwUG9ydCAobmV0d29yayA8dHlwZSAtMTY+LCBzZXJ2aWNlIDx0eXBlIC0xNj4pIChwb3J0IDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBMb29rdXBTUlYgKHNlcnZpY2UgPHR5cGUgLTE2PiwgcHJvdG8gPHR5cGUgLTE2PiwgbmFtZSA8dHlwZSAtMTY+KSAoY25hbWUgPHR5cGUgLTE2PiwgYWRkcnMgPHR5cGUgMjU5IFtdIDx0eXBlIDI2MCAqPHR5cGUgMjYxICJTUlYiIDx0eXBlIDI2MiBzdHJ1Y3QgeyBUYXJnZXQgPHR5cGUgLTE2PjsgUG9ydCA8dHlwZSAtNj47IFByaW9yaXR5IDx0eXBlIC02PjsgV2VpZ2h0IDx0eXBlIC02PjsgfT4+Pj4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBMb29rdXBUWFQgKG5hbWUgPHR5cGUgLTE2PikgKHR4dCA8dHlwZSAyNjMgW10gPHR5cGUgLTE2Pj4sIGVyciA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSAyNTM+Owp0eXBlIDx0eXBlIDI1Nz47CnR5cGUgPHR5cGUgMjY0ICJPcEVycm9yIiA8dHlwZSAyNjUgc3RydWN0IHsgT3AgPHR5cGUgLTE2PjsgTmV0IDx0eXBlIC0xNj47IEFkZHIgPHR5cGUgMT47IEVyciA8dHlwZSAtMTk+OyB9PgogZnVuYyAoZSA8dHlwZSAyNjYgKjx0eXBlIDI2ND4+KSBFcnJvciAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZSA8dHlwZSAyNjY+KSBUZW1wb3JhcnkgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGUgPHR5cGUgMjY2PikgVGltZW91dCAoKSA8dHlwZSAtMTU+Owo+Owp0eXBlIDx0eXBlIDIyMj47CmZ1bmMgUGFyc2VDSURSIChzIDx0eXBlIC0xNj4pICg/IDx0eXBlIDQ2PiwgPyA8dHlwZSAyMzE+LCA/IDx0eXBlIC0xOT4pOwp0eXBlIDx0eXBlIDI2NyAiUGFyc2VFcnJvciIgPHR5cGUgMjY4IHN0cnVjdCB7IFR5cGUgPHR5cGUgLTE2PjsgVGV4dCA8dHlwZSAtMTY+OyB9PgogZnVuYyAoZSA8dHlwZSAyNjkgKjx0eXBlIDI2Nz4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+OwpmdW5jIFBhcnNlSVAgKHMgPHR5cGUgLTE2PikgPHR5cGUgNDY+OwpmdW5jIFBhcnNlTUFDIChzIDx0eXBlIC0xNj4pIChodyA8dHlwZSAyMjc+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgUGlwZSAoKSAoPyA8dHlwZSA4PiwgPyA8dHlwZSA4Pik7CmZ1bmMgUmVzb2x2ZUlQQWRkciAobmV0IDx0eXBlIC0xNj4sIGFkZHIgPHR5cGUgLTE2PikgKD8gPHR5cGUgNDM+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIFJlc29sdmVUQ1BBZGRyIChuZXQgPHR5cGUgLTE2PiwgYWRkciA8dHlwZSAtMTY+KSAoPyA8dHlwZSAxMzM+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIFJlc29sdmVVRFBBZGRyIChuZXQgPHR5cGUgLTE2PiwgYWRkciA8dHlwZSAtMTY+KSAoPyA8dHlwZSAxNzk+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIFJlc29sdmVVbml4QWRkciAobmV0IDx0eXBlIC0xNj4sIGFkZHIgPHR5cGUgLTE2PikgKD8gPHR5cGUgMTk3PiwgPyA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSAyNjE+OwpmdW5jIFNwbGl0SG9zdFBvcnQgKGhvc3Rwb3J0IDx0eXBlIC0xNj4pIChob3N0IDx0eXBlIC0xNj4sIHBvcnQgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwp0eXBlIDx0eXBlIDEzND47CnR5cGUgPHR5cGUgMTM4PjsKdHlwZSA8dHlwZSAyNDE+Owp0eXBlIDx0eXBlIDE4MD47CnR5cGUgPHR5cGUgMTg0PjsKdHlwZSA8dHlwZSAxOTg+Owp0eXBlIDx0eXBlIDIwMj47CnR5cGUgPHR5cGUgMjQ1PjsKdHlwZSA8dHlwZSAyNzAgIlVua25vd25OZXR3b3JrRXJyb3IiIDx0eXBlIC0xNj4KIGZ1bmMgKGUgPHR5cGUgMjcwPikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGUgPHR5cGUgMjcwPikgVGVtcG9yYXJ5ICgpIDx0eXBlIC0xNT47CiBmdW5jIChlIDx0eXBlIDI3MD4pIFRpbWVvdXQgKCkgPHR5cGUgLTE1PjsKPjsKY2hlY2tzdW0gMTk0MzQwNDVENkMwNEMwN0I4MzRGRUU1QTJFM0RGRDE5NzU4N0MzMjsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAAAAAA0AAAALXEAAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAYXEAACYAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAIhxAAAgAAAABAAAAAIAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAACocQAAAQAAAAAAAAAAAAAAAQAAAAAAAAA=