f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAADcUQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHhtbDsKcGtncGF0aCBlbmNvZGluZy94bWw7CnByaW9yaXR5IDc7CmltcG9ydCBidWZpbyBidWZpbyAiYnVmaW8iOwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGVuY29kaW5nIGVuY29kaW5nICJlbmNvZGluZyI7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCByZWZsZWN0IHJlZmxlY3QgInJlZmxlY3QiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW1wb3J0IHN0cmluZ3Mgc3RyaW5ncyAic3RyaW5ncyI7CmltcG9ydCBzeW5jIHN5bmMgInN5bmMiOwppbXBvcnQgdW5pY29kZSB1bmljb2RlICJ1bmljb2RlIjsKaW1wb3J0IHV0ZjggdW5pY29kZS91dGY4ICJ1bmljb2RlL3V0ZjgiOwppbml0IHhtbCBlbmNvZGluZ194bWwuLmltcG9ydCA3IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IGJ1ZmlvIGJ1ZmlvLi5pbXBvcnQgNSBvcyBvcy4uaW1wb3J0IDUgZm10IGZtdC4uaW1wb3J0IDY7CnR5cGUgPHR5cGUgMSAiQXR0ciIgPHR5cGUgMiBzdHJ1Y3QgeyBOYW1lIDx0eXBlIDMgIk5hbWUiIDx0eXBlIDQgc3RydWN0IHsgU3BhY2UgPHR5cGUgLTE2PjsgTG9jYWwgPHR5cGUgLTE2PjsgfT4+OyBWYWx1ZSA8dHlwZSAtMTY+OyB9Pj47CnR5cGUgPHR5cGUgNSAiQ2hhckRhdGEiIDx0eXBlIDYgW10gPHR5cGUgLTIwPj4KIGZ1bmMgKGMgPHR5cGUgNT4pIENvcHkgKCkgPHR5cGUgNT47Cj47CnR5cGUgPHR5cGUgNyAiQ29tbWVudCIgPHR5cGUgOCBbXSA8dHlwZSAtMjA+PgogZnVuYyAoYyA8dHlwZSA3PikgQ29weSAoKSA8dHlwZSA3PjsKPjsKZnVuYyBDb3B5VG9rZW4gKHQgPHR5cGUgOSAiVG9rZW4iIDx0eXBlIDEwIGludGVyZmFjZSB7IH0+PikgPHR5cGUgOT47CnR5cGUgPHR5cGUgMTEgIkRlY29kZXIiIDx0eXBlIDEyIHN0cnVjdCB7IFN0cmljdCA8dHlwZSAtMTU+OyBBdXRvQ2xvc2UgPHR5cGUgMTMgW10gPHR5cGUgLTE2Pj47IEVudGl0eSA8dHlwZSAxNCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIC0xNj4+OyBDaGFyc2V0UmVhZGVyIDx0eXBlIDE1IChjaGFyc2V0IDx0eXBlIC0xNj4sIGlucHV0IDx0eXBlIDE2ICJpby5SZWFkZXIiIDx0eXBlIDE3IGludGVyZmFjZSB7IFJlYWQgKHAgPHR5cGUgMTggW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSAoPyA8dHlwZSAxNj4sID8gPHR5cGUgLTE5Pik+OyBEZWZhdWx0U3BhY2UgPHR5cGUgLTE2PjsgLmVuY29kaW5nL3htbC5yIDx0eXBlIDE5ICJpby5CeXRlUmVhZGVyIiA8dHlwZSAyMCBpbnRlcmZhY2UgeyBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgLmVuY29kaW5nL3htbC5idWYgPHR5cGUgMjEgImJ5dGVzLkJ1ZmZlciIgPHR5cGUgMjIgc3RydWN0IHsgLmJ5dGVzLmJ1ZiA8dHlwZSAyMyBbXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLm9mZiA8dHlwZSAtMTE+OyAuYnl0ZXMucnVuZUJ5dGVzIDx0eXBlIDI0IFs0IF0gPHR5cGUgLTIwPj47IC5ieXRlcy5ib290c3RyYXAgPHR5cGUgMjUgWzY0IF0gPHR5cGUgLTIwPj47IC5ieXRlcy5sYXN0UmVhZCA8dHlwZSAyNiAiLmJ5dGVzLnJlYWRPcCIgPHR5cGUgLTExPj47IH0+CiBmdW5jIChiIDx0eXBlIDI3ICo8dHlwZSAyMT4+KSBVbnJlYWRCeXRlICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI3PikgVHJ1bmNhdGUgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDI3PikgV3JpdGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNz4pIFJlYWRTdHJpbmcgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIC0xNj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3PikgTmV4dCAobiA8dHlwZSAtMTE+KSA8dHlwZSAyOCBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBXcml0ZVJ1bmUgKHIgPHR5cGUgLTIxPikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYiA8dHlwZSAyNz4pIFdyaXRlVG8gKHcgPHR5cGUgMjkgImlvLldyaXRlciIgPHR5cGUgMzAgaW50ZXJmYWNlIHsgV3JpdGUgKHAgPHR5cGUgMzEgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBSZWFkQnl0ZXMgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDMyIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3PikgLmJ5dGVzLmdyb3cgKG4gPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI3PikgUmVhZCAocCA8dHlwZSAzMyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNz4pIFJlc2V0ICgpOwogZnVuYyAoYiA8dHlwZSAyNz4pIC5ieXRlcy5yZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDM0IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3PikgV3JpdGVCeXRlIChjIDx0eXBlIC0yMD4pIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI3PikgV3JpdGUgKHAgPHR5cGUgMzUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBSZWFkRnJvbSAociA8dHlwZSAxNj4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNz4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAyNz4pIEdyb3cgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDI3PikgQnl0ZXMgKCkgPHR5cGUgMzYgW10gPHR5cGUgLTIwPj47Cj47IC5lbmNvZGluZy94bWwuc2F2ZWQgPHR5cGUgMjc+OyAuZW5jb2RpbmcveG1sLnN0ayA8dHlwZSAzNyAqPHR5cGUgMzggIi5lbmNvZGluZy94bWwuc3RhY2siIDx0eXBlIDM5IHN0cnVjdCB7IC5lbmNvZGluZy94bWwubmV4dCA8dHlwZSA0MCAqPHR5cGUgMzg+PjsgLmVuY29kaW5nL3htbC5raW5kIDx0eXBlIC0xMT47IC5lbmNvZGluZy94bWwubmFtZSA8dHlwZSAzPjsgLmVuY29kaW5nL3htbC5vayA8dHlwZSAtMTU+OyB9Pj4+OyAuZW5jb2RpbmcveG1sLmZyZWUgPHR5cGUgNDEgKjx0eXBlIDM4Pj47IC5lbmNvZGluZy94bWwubmVlZENsb3NlIDx0eXBlIC0xNT47IC5lbmNvZGluZy94bWwudG9DbG9zZSA8dHlwZSAzPjsgLmVuY29kaW5nL3htbC5uZXh0VG9rZW4gPHR5cGUgOT47IC5lbmNvZGluZy94bWwubmV4dEJ5dGUgPHR5cGUgLTExPjsgLmVuY29kaW5nL3htbC5ucyA8dHlwZSA0MiBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIC0xNj4+OyAuZW5jb2RpbmcveG1sLmVyciA8dHlwZSAtMTk+OyAuZW5jb2RpbmcveG1sLmxpbmUgPHR5cGUgLTExPjsgLmVuY29kaW5nL3htbC5vZmZzZXQgPHR5cGUgLTQ+OyAuZW5jb2RpbmcveG1sLnVubWFyc2hhbERlcHRoIDx0eXBlIC0xMT47IH0+CiBmdW5jIChkIDx0eXBlIDQzICo8dHlwZSAxMT4+KSBEZWNvZGUgKHYgPHR5cGUgNDQgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT47CiBmdW5jIChkIDx0eXBlIDQ1ICo8dHlwZSAxMT4+KSBEZWNvZGVFbGVtZW50ICh2IDx0eXBlIDQ2IGludGVyZmFjZSB7IH0+LCBzdGFydCA8dHlwZSA0NyAqPHR5cGUgNDggIlN0YXJ0RWxlbWVudCIgPHR5cGUgNDkgc3RydWN0IHsgTmFtZSA8dHlwZSAzPjsgQXR0ciA8dHlwZSA1MCBbXSA8dHlwZSAxPj47IH0+CiBmdW5jIChlIDx0eXBlIDQ4PikgQ29weSAoKSA8dHlwZSA0OD47CiBmdW5jIChlIDx0eXBlIDQ4PikgRW5kICgpIDx0eXBlIDUxICJFbmRFbGVtZW50IiA8dHlwZSA1MiBzdHJ1Y3QgeyBOYW1lIDx0eXBlIDM+OyB9Pj47Cj4+KSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSA1MyAqPHR5cGUgMTE+PikgLmVuY29kaW5nL3htbC51bm1hcnNoYWxJbnRlcmZhY2UgKHZhbCA8dHlwZSA1NCAiVW5tYXJzaGFsZXIiIDx0eXBlIDU1IGludGVyZmFjZSB7IFVubWFyc2hhbFhNTCAoZCA8dHlwZSA1NiAqPHR5cGUgMTE+Piwgc3RhcnQgPHR5cGUgNDg+KSA8dHlwZSAtMTk+OyB9Pj4sIHN0YXJ0IDx0eXBlIDU3ICo8dHlwZSA0OD4+KSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSA1OCAqPHR5cGUgMTE+PikgLmVuY29kaW5nL3htbC51bm1hcnNoYWxUZXh0SW50ZXJmYWNlICh2YWwgPHR5cGUgNTkgImVuY29kaW5nLlRleHRVbm1hcnNoYWxlciIgPHR5cGUgNjAgaW50ZXJmYWNlIHsgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSA2MSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsgfT4+LCBzdGFydCA8dHlwZSA2MiAqPHR5cGUgNDg+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHAgPHR5cGUgNjMgKjx0eXBlIDExPj4pIC5lbmNvZGluZy94bWwudW5tYXJzaGFsQXR0ciAodmFsIDx0eXBlIDY0ICJyZWZsZWN0LlZhbHVlIiA8dHlwZSA2NSBzdHJ1Y3QgeyAucmVmbGVjdC50eXAgPHR5cGUgNjYgKjx0eXBlIDY3ICIucmVmbGVjdC5ydHlwZSIgPHR5cGUgNjggc3RydWN0IHsgLnJlZmxlY3Qua2luZCA8dHlwZSAtNT47IC5yZWZsZWN0LmFsaWduIDx0eXBlIC0xPjsgLnJlZmxlY3QuZmllbGRBbGlnbiA8dHlwZSAtNT47IC5yZWZsZWN0Ll8gPHR5cGUgLTU+OyAucmVmbGVjdC5zaXplIDx0eXBlIC0xMz47IC5yZWZsZWN0Lmhhc2ggPHR5cGUgLTc+OyAucmVmbGVjdC5oYXNoZm4gPHR5cGUgLTEzPjsgLnJlZmxlY3QuZXF1YWxmbiA8dHlwZSAtMTM+OyAucmVmbGVjdC5nYyA8dHlwZSA2OSAidW5zYWZlLlBvaW50ZXIiICJ1bnNhZmUiIDx0eXBlIDcwICphbnk+PjsgLnJlZmxlY3Quc3RyaW5nIDx0eXBlIDcxICo8dHlwZSAtMTY+PjsgPyA8dHlwZSA3MiAqPHR5cGUgNzMgIi5yZWZsZWN0LnVuY29tbW9uVHlwZSIgPHR5cGUgNzQgc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSA3MT47IC5yZWZsZWN0LnBrZ1BhdGggPHR5cGUgNzE+OyAucmVmbGVjdC5tZXRob2RzIDx0eXBlIDc1IFtdIDx0eXBlIDc2ICIucmVmbGVjdC5tZXRob2QiIDx0eXBlIDc3IHN0cnVjdCB7IC5yZWZsZWN0Lm5hbWUgPHR5cGUgNzE+OyAucmVmbGVjdC5wa2dQYXRoIDx0eXBlIDcxPjsgLnJlZmxlY3QubXR5cCA8dHlwZSA3OCAqPHR5cGUgNjc+PjsgLnJlZmxlY3QudHlwIDx0eXBlIDc4PjsgLnJlZmxlY3QudGZuIDx0eXBlIDY5PjsgfT4+PjsgfT4KIGZ1bmMgKHQgPHR5cGUgNzkgKjx0eXBlIDczPj4pIFBrZ1BhdGggKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBNZXRob2RCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKG0gPHR5cGUgODAgInJlZmxlY3QuTWV0aG9kIiA8dHlwZSA4MSBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj47IFBrZ1BhdGggPHR5cGUgLTE2PjsgVHlwZSA8dHlwZSA4MiAicmVmbGVjdC5UeXBlIiA8dHlwZSA4MyBpbnRlcmZhY2UgeyBBbGlnbiAoKSA8dHlwZSAtMTE+OyBGaWVsZEFsaWduICgpIDx0eXBlIC0xMT47IE1ldGhvZCAoPyA8dHlwZSAtMTE+KSA8dHlwZSA4MD47IE1ldGhvZEJ5TmFtZSAoPyA8dHlwZSAtMTY+KSAoPyA8dHlwZSA4MD4sID8gPHR5cGUgLTE1Pik7IE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OyBOYW1lICgpIDx0eXBlIC0xNj47IFBrZ1BhdGggKCkgPHR5cGUgLTE2PjsgU2l6ZSAoKSA8dHlwZSAtMTM+OyBTdHJpbmcgKCkgPHR5cGUgLTE2PjsgLnJlZmxlY3QucmF3U3RyaW5nICgpIDx0eXBlIC0xNj47IEtpbmQgKCkgPHR5cGUgODQgInJlZmxlY3QuS2luZCIgPHR5cGUgLTEyPgogZnVuYyAoayA8dHlwZSA4ND4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBJbXBsZW1lbnRzICh1IDx0eXBlIDgyPikgPHR5cGUgLTE1PjsgQXNzaWduYWJsZVRvICh1IDx0eXBlIDgyPikgPHR5cGUgLTE1PjsgQ29udmVydGlibGVUbyAodSA8dHlwZSA4Mj4pIDx0eXBlIC0xNT47IENvbXBhcmFibGUgKCkgPHR5cGUgLTE1PjsgQml0cyAoKSA8dHlwZSAtMTE+OyBDaGFuRGlyICgpIDx0eXBlIDg1ICJyZWZsZWN0LkNoYW5EaXIiIDx0eXBlIC0xMT4KIGZ1bmMgKGQgPHR5cGUgODU+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgSXNWYXJpYWRpYyAoKSA8dHlwZSAtMTU+OyBFbGVtICgpIDx0eXBlIDgyPjsgRmllbGQgKGkgPHR5cGUgLTExPikgPHR5cGUgODYgInJlZmxlY3QuU3RydWN0RmllbGQiIDx0eXBlIDg3IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgUGtnUGF0aCA8dHlwZSAtMTY+OyBUeXBlIDx0eXBlIDgyPjsgVGFnIDx0eXBlIDg4ICJyZWZsZWN0LlN0cnVjdFRhZyIgPHR5cGUgLTE2PgogZnVuYyAodGFnIDx0eXBlIDg4PikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKPjsgT2Zmc2V0IDx0eXBlIC0xMz47IEluZGV4IDx0eXBlIDg5IFtdIDx0eXBlIC0xMT4+OyBBbm9ueW1vdXMgPHR5cGUgLTE1PjsgfT4+OyBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDkwIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSA4Nj47IEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDg2PiwgPyA8dHlwZSAtMTU+KTsgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSA5MSAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgODY+LCA/IDx0eXBlIC0xNT4pOyBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSA4Mj47IEtleSAoKSA8dHlwZSA4Mj47IExlbiAoKSA8dHlwZSAtMTE+OyBOdW1GaWVsZCAoKSA8dHlwZSAtMTE+OyBOdW1JbiAoKSA8dHlwZSAtMTE+OyBOdW1PdXQgKCkgPHR5cGUgLTExPjsgT3V0IChpIDx0eXBlIC0xMT4pIDx0eXBlIDgyPjsgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDc4PjsgLnJlZmxlY3QudW5jb21tb24gKCkgPHR5cGUgNzk+OyB9Pj47IEZ1bmMgPHR5cGUgNjQ+OyBJbmRleCA8dHlwZSAtMTE+OyB9Pj4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSA3OT4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA3OT4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNzk+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgODA+KTsKIGZ1bmMgKHQgPHR5cGUgNzk+KSAucmVmbGVjdC51bmNvbW1vbiAoKSA8dHlwZSA3OT47Cj4+OyAucmVmbGVjdC5wdHJUb1RoaXMgPHR5cGUgNzg+OyAucmVmbGVjdC56ZXJvIDx0eXBlIDY5PjsgfT4KIGZ1bmMgKHQgPHR5cGUgNzg+KSBGaWVsZEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDc4PikgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDc4PjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgODA+KTsKIGZ1bmMgKHQgPHR5cGUgNzg+KSAucmVmbGVjdC5wdHJUbyAoKSA8dHlwZSA3OD47CiBmdW5jICh0IDx0eXBlIDc4PikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIChtIDx0eXBlIDgwPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDc4PikgLnJlZmxlY3QucmF3U3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDc4PikgS2V5ICgpIDx0eXBlIDgyPjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSA4Mj47CiBmdW5jICh0IDx0eXBlIDc4PikgSXNWYXJpYWRpYyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA3OD4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBDaGFuRGlyICgpIDx0eXBlIDg1PjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDkyIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSA4Nj47CiBmdW5jICh0IDx0eXBlIDc4PikgS2luZCAoKSA8dHlwZSA4ND47CiBmdW5jICh0IDx0eXBlIDc4PikgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDc4PikgT3V0IChpIDx0eXBlIC0xMT4pIDx0eXBlIDgyPjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBJbXBsZW1lbnRzICh1IDx0eXBlIDgyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBQa2dQYXRoICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDc4PikgQ29udmVydGlibGVUbyAodSA8dHlwZSA4Mj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDc4PikgRmllbGQgKGkgPHR5cGUgLTExPikgPHR5cGUgODY+OwogZnVuYyAodCA8dHlwZSA3OD4pIEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDc4PikgRWxlbSAoKSA8dHlwZSA4Mj47CiBmdW5jICh0IDx0eXBlIDc4PikgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKD8gPHR5cGUgODY+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSA3OD4pIC5yZWZsZWN0LnBvaW50ZXJzICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDc4PikgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSA5MyAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgODY+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSA3OD4pIEJpdHMgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBOdW1JbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA3OD4pIE51bU91dCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA3OD4pIFNpemUgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBOdW1GaWVsZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA3OD4pIENvbXBhcmFibGUgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgNzg+KSBBc3NpZ25hYmxlVG8gKHUgPHR5cGUgODI+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA3OD4pIExlbiAoKSA8dHlwZSAtMTE+Owo+PjsgLnJlZmxlY3QucHRyIDx0eXBlIDY5PjsgPyA8dHlwZSA5NCAiLnJlZmxlY3QuZmxhZyIgPHR5cGUgLTEzPgogZnVuYyAoZiA8dHlwZSA5ND4pIC5yZWZsZWN0Lm11c3RCZSAoZXhwZWN0ZWQgPHR5cGUgODQ+KTsKIGZ1bmMgKGYgPHR5cGUgOTQ+KSAucmVmbGVjdC5tdXN0QmVFeHBvcnRlZCAoKTsKIGZ1bmMgKGYgPHR5cGUgOTQ+KSAucmVmbGVjdC5tdXN0QmVBc3NpZ25hYmxlICgpOwogZnVuYyAoZiA8dHlwZSA5ND4pIC5yZWZsZWN0LmtpbmQgKCkgPHR5cGUgODQ+Owo+OyB9PgogZnVuYyAodiA8dHlwZSA2ND4pIFR5cGUgKCkgPHR5cGUgODI+OwogZnVuYyAodiA8dHlwZSA2ND4pIE92ZXJmbG93Q29tcGxleCAoeCA8dHlwZSAtMTg+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2ND4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSA2ND47CiBmdW5jICh2IDx0eXBlIDY0PikgQnl0ZXMgKCkgPHR5cGUgOTUgW10gPHR5cGUgLTIwPj47CiBmdW5jICh2IDx0eXBlIDY0PikgSW50ZXJmYWNlICgpIChpIDx0eXBlIDk2IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSA2ND47CiBmdW5jICh2IDx0eXBlIDY0PikgU2VuZCAoeCA8dHlwZSA2ND4pOwogZnVuYyAodiA8dHlwZSA2ND4pIC5yZWZsZWN0LnJlY3YgKG5iIDx0eXBlIC0xNT4pICh2YWwgPHR5cGUgNjQ+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBVaW50ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBJc1ZhbGlkICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDY0PikgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDY0PikgT3ZlcmZsb3dGbG9hdCAoeCA8dHlwZSAtMTA+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2ND4pIE1hcEtleXMgKCkgPHR5cGUgOTcgW10gPHR5cGUgNjQ+PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgPHR5cGUgNjQ+OwogZnVuYyAodiA8dHlwZSA2ND4pIFNldEludCAoeCA8dHlwZSAtND4pOwogZnVuYyAodiA8dHlwZSA2ND4pIEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDY0PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBTZXRMZW4gKG4gPHR5cGUgLTExPik7CiBmdW5jICh2IDx0eXBlIDY0PikgVW5zYWZlQWRkciAoKSA8dHlwZSAtMTM+OwogZnVuYyAodiA8dHlwZSA2ND4pIFNsaWNlMyAoaSA8dHlwZSAtMTE+LCBqIDx0eXBlIC0xMT4sIGsgPHR5cGUgLTExPikgPHR5cGUgNjQ+OwogZnVuYyAodiA8dHlwZSA2ND4pIENvbXBsZXggKCkgPHR5cGUgLTE4PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBTZXRDYXAgKG4gPHR5cGUgLTExPik7CiBmdW5jICh2IDx0eXBlIDY0PikgQ2FsbFNsaWNlIChpbiA8dHlwZSA5OCBbXSA8dHlwZSA2ND4+KSA8dHlwZSA5OSBbXSA8dHlwZSA2ND4+OwogZnVuYyAodiA8dHlwZSA2ND4pIEZsb2F0ICgpIDx0eXBlIC0xMD47CiBmdW5jICh2IDx0eXBlIDY0PikgLnJlZmxlY3QuYXNzaWduVG8gKGNvbnRleHQgPHR5cGUgLTE2PiwgZHN0IDx0eXBlIDY2PiwgdGFyZ2V0IDx0eXBlIDY5PikgPHR5cGUgNjQ+OwogZnVuYyAodiA8dHlwZSA2ND4pIC5yZWZsZWN0LnJ1bmVzICgpIDx0eXBlIDEwMCBbXSA8dHlwZSAtMjE+PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBFbGVtICgpIDx0eXBlIDY0PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBJbmRleCAoaSA8dHlwZSAtMTE+KSA8dHlwZSA2ND47CiBmdW5jICh2IDx0eXBlIDY0PikgVHJ5U2VuZCAoeCA8dHlwZSA2ND4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDY0PikgU2V0Qm9vbCAoeCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBTZXRCeXRlcyAoeCA8dHlwZSAxMDEgW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodiA8dHlwZSA2ND4pIC5yZWZsZWN0LnNldFJ1bmVzICh4IDx0eXBlIDEwMiBbXSA8dHlwZSAtMjE+Pik7CiBmdW5jICh2IDx0eXBlIDY0PikgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSAxMDMgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pIDx0eXBlIDY0PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBPdmVyZmxvd1VpbnQgKHggPHR5cGUgLTg+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2ND4pIE1hcEluZGV4IChrZXkgPHR5cGUgNjQ+KSA8dHlwZSA2ND47CiBmdW5jICh2IDx0eXBlIDY0PikgSXNOaWwgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBTZXRQb2ludGVyICh4IDx0eXBlIDY5Pik7CiBmdW5jICh2IDx0eXBlIDY0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh2IDx0eXBlIDY0PikgLnJlZmxlY3QuY2FsbCAob3AgPHR5cGUgLTE2PiwgaW4gPHR5cGUgMTA0IFtdIDx0eXBlIDY0Pj4pIDx0eXBlIDEwNSBbXSA8dHlwZSA2ND4+OwogZnVuYyAodiA8dHlwZSA2ND4pIEludCAoKSA8dHlwZSAtND47CiBmdW5jICh2IDx0eXBlIDY0PikgUmVjdiAoKSAoeCA8dHlwZSA2ND4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSA2ND4pIENvbnZlcnQgKHQgPHR5cGUgODI+KSA8dHlwZSA2ND47CiBmdW5jICh2IDx0eXBlIDY0PikgS2luZCAoKSA8dHlwZSA4ND47CiBmdW5jICh2IDx0eXBlIDY0PikgSW50ZXJmYWNlRGF0YSAoKSA8dHlwZSAxMDYgWzIgXSA8dHlwZSAtMTM+PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBTZXRNYXBJbmRleCAoa2V5IDx0eXBlIDY0PiwgdmFsIDx0eXBlIDY0Pik7CiBmdW5jICh2IDx0eXBlIDY0PikgQ2FsbCAoaW4gPHR5cGUgMTA3IFtdIDx0eXBlIDY0Pj4pIDx0eXBlIDEwOCBbXSA8dHlwZSA2ND4+OwogZnVuYyAodiA8dHlwZSA2ND4pIFNldCAoeCA8dHlwZSA2ND4pOwogZnVuYyAodiA8dHlwZSA2ND4pIFNldFVpbnQgKHggPHR5cGUgLTg+KTsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBCb29sICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDY0PikgU2xpY2UgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KSA8dHlwZSA2ND47CiBmdW5jICh2IDx0eXBlIDY0PikgLnJlZmxlY3QucG9pbnRlciAoKSA8dHlwZSA2OT47CiBmdW5jICh2IDx0eXBlIDY0PikgUG9pbnRlciAoKSA8dHlwZSAtMTM+OwogZnVuYyAodiA8dHlwZSA2ND4pIENhcCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSA2ND4pIFNldFN0cmluZyAoeCA8dHlwZSAtMTY+KTsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBUcnlSZWN2ICgpICh4IDx0eXBlIDY0Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDY0PikgQ2xvc2UgKCk7CiBmdW5jICh2IDx0eXBlIDY0PikgQ2FuQWRkciAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2ND4pIENhblNldCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2ND4pIC5yZWZsZWN0LnNlbmQgKHggPHR5cGUgNjQ+LCBuYiA8dHlwZSAtMTU+KSAoc2VsZWN0ZWQgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDY0PikgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSAxMDkgW10gPHR5cGUgLTExPj4pIDx0eXBlIDY0PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBPdmVyZmxvd0ludCAoeCA8dHlwZSAtND4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDY0PikgTnVtRmllbGQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBTZXRGbG9hdCAoeCA8dHlwZSAtMTA+KTsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBDYW5JbnRlcmZhY2UgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNjQ+KSBTZXRDb21wbGV4ICh4IDx0eXBlIC0xOD4pOwogZnVuYyAodiA8dHlwZSA2ND4pIEFkZHIgKCkgPHR5cGUgNjQ+Owo+LCBhdHRyIDx0eXBlIDE+KSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSAxMTAgKjx0eXBlIDExPj4pIC5lbmNvZGluZy94bWwudW5tYXJzaGFsICh2YWwgPHR5cGUgNjQ+LCBzdGFydCA8dHlwZSAxMTEgKjx0eXBlIDQ4Pj4pIDx0eXBlIC0xOT47CiBmdW5jIChwIDx0eXBlIDExMiAqPHR5cGUgMTE+PikgLmVuY29kaW5nL3htbC51bm1hcnNoYWxQYXRoICh0aW5mbyA8dHlwZSAxMTMgKjx0eXBlIDExNCAiLmVuY29kaW5nL3htbC50eXBlSW5mbyIgPHR5cGUgMTE1IHN0cnVjdCB7IC5lbmNvZGluZy94bWwueG1sbmFtZSA8dHlwZSAxMTYgKjx0eXBlIDExNyAiLmVuY29kaW5nL3htbC5maWVsZEluZm8iIDx0eXBlIDExOCBzdHJ1Y3QgeyAuZW5jb2RpbmcveG1sLmlkeCA8dHlwZSAxMTkgW10gPHR5cGUgLTExPj47IC5lbmNvZGluZy94bWwubmFtZSA8dHlwZSAtMTY+OyAuZW5jb2RpbmcveG1sLnhtbG5zIDx0eXBlIC0xNj47IC5lbmNvZGluZy94bWwuZmxhZ3MgPHR5cGUgMTIwICIuZW5jb2RpbmcveG1sLmZpZWxkRmxhZ3MiIDx0eXBlIC0xMT4+OyAuZW5jb2RpbmcveG1sLnBhcmVudHMgPHR5cGUgMTIxIFtdIDx0eXBlIC0xNj4+OyB9PgogZnVuYyAoZmluZm8gPHR5cGUgMTIyICo8dHlwZSAxMTc+PikgLmVuY29kaW5nL3htbC52YWx1ZSAodiA8dHlwZSA2ND4pIDx0eXBlIDY0PjsKPj47IC5lbmNvZGluZy94bWwuZmllbGRzIDx0eXBlIDEyMyBbXSA8dHlwZSAxMTc+PjsgfT4+Piwgc3YgPHR5cGUgNjQ+LCBwYXJlbnRzIDx0eXBlIDEyNCBbXSA8dHlwZSAtMTY+Piwgc3RhcnQgPHR5cGUgMTI1ICo8dHlwZSA0OD4+KSAoY29uc3VtZWQgPHR5cGUgLTE1PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSAxMjYgKjx0eXBlIDExPj4pIFNraXAgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGQgPHR5cGUgMTI3ICo8dHlwZSAxMT4+KSBUb2tlbiAoKSAodCA8dHlwZSA5PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSAxMjc+KSAuZW5jb2RpbmcveG1sLnRyYW5zbGF0ZSAobiA8dHlwZSAxMjggKjx0eXBlIDM+PiwgaXNFbGVtZW50TmFtZSA8dHlwZSAtMTU+KTsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC5zd2l0Y2hUb1JlYWRlciAociA8dHlwZSAxNj4pOwogZnVuYyAoZCA8dHlwZSAxMjc+KSAuZW5jb2RpbmcveG1sLnB1c2ggKGtpbmQgPHR5cGUgLTExPikgPHR5cGUgMTI5ICo8dHlwZSAzOD4+OwogZnVuYyAoZCA8dHlwZSAxMjc+KSAuZW5jb2RpbmcveG1sLnBvcCAoKSA8dHlwZSAxMjk+OwogZnVuYyAoZCA8dHlwZSAxMjc+KSAuZW5jb2RpbmcveG1sLnB1c2hFT0YgKCk7CiBmdW5jIChkIDx0eXBlIDEyNz4pIC5lbmNvZGluZy94bWwucG9wRU9GICgpIDx0eXBlIC0xNT47CiBmdW5jIChkIDx0eXBlIDEyNz4pIC5lbmNvZGluZy94bWwucHVzaEVsZW1lbnQgKG5hbWUgPHR5cGUgMz4pOwogZnVuYyAoZCA8dHlwZSAxMjc+KSAuZW5jb2RpbmcveG1sLnB1c2hOcyAobG9jYWwgPHR5cGUgLTE2PiwgdXJsIDx0eXBlIC0xNj4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAoZCA8dHlwZSAxMjc+KSAuZW5jb2RpbmcveG1sLnN5bnRheEVycm9yIChtc2cgPHR5cGUgLTE2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC5wb3BFbGVtZW50ICh0IDx0eXBlIDEzMCAqPHR5cGUgNTE+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC5hdXRvQ2xvc2UgKHQgPHR5cGUgOT4pICg/IDx0eXBlIDk+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAoZCA8dHlwZSAxMjc+KSBSYXdUb2tlbiAoKSAoPyA8dHlwZSA5PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC5yYXdUb2tlbiAoKSAoPyA8dHlwZSA5PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC5hdHRydmFsICgpIDx0eXBlIDEzMSBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC5zcGFjZSAoKTsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC5nZXRjICgpIChiIDx0eXBlIC0yMD4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAoZCA8dHlwZSAxMjc+KSBJbnB1dE9mZnNldCAoKSA8dHlwZSAtND47CiBmdW5jIChkIDx0eXBlIDEyNz4pIC5lbmNvZGluZy94bWwuc2F2ZWRPZmZzZXQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC5tdXN0Z2V0YyAoKSAoYiA8dHlwZSAtMjA+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC51bmdldGMgKGIgPHR5cGUgLTIwPik7CiBmdW5jIChkIDx0eXBlIDEyNz4pIC5lbmNvZGluZy94bWwudGV4dCAocXVvdGUgPHR5cGUgLTExPiwgY2RhdGEgPHR5cGUgLTE1PikgPHR5cGUgMTMyIFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoZCA8dHlwZSAxMjc+KSAuZW5jb2RpbmcveG1sLm5zbmFtZSAoKSAobmFtZSA8dHlwZSAzPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jIChkIDx0eXBlIDEyNz4pIC5lbmNvZGluZy94bWwubmFtZSAoKSAocyA8dHlwZSAtMTY+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKGQgPHR5cGUgMTI3PikgLmVuY29kaW5nL3htbC5yZWFkTmFtZSAoKSAob2sgPHR5cGUgLTE1Pik7Cj47CnR5cGUgPHR5cGUgMTMzICJEaXJlY3RpdmUiIDx0eXBlIDEzNCBbXSA8dHlwZSAtMjA+PgogZnVuYyAoZCA8dHlwZSAxMzM+KSBDb3B5ICgpIDx0eXBlIDEzMz47Cj47CnR5cGUgPHR5cGUgMTM1ICJFbmNvZGVyIiA8dHlwZSAxMzYgc3RydWN0IHsgLmVuY29kaW5nL3htbC5wIDx0eXBlIDEzNyAiLmVuY29kaW5nL3htbC5wcmludGVyIiA8dHlwZSAxMzggc3RydWN0IHsgPyA8dHlwZSAxMzkgKjx0eXBlIDE0MCAiYnVmaW8uV3JpdGVyIiA8dHlwZSAxNDEgc3RydWN0IHsgLmJ1ZmlvLmVyciA8dHlwZSAtMTk+OyAuYnVmaW8uYnVmIDx0eXBlIDE0MiBbXSA8dHlwZSAtMjA+PjsgLmJ1ZmlvLm4gPHR5cGUgLTExPjsgLmJ1ZmlvLndyIDx0eXBlIDI5PjsgfT4KIGZ1bmMgKGIgPHR5cGUgMTQzICo8dHlwZSAxNDA+PikgUmVhZEZyb20gKHIgPHR5cGUgMTY+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTQzPikgV3JpdGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgKD8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTQzPikgV3JpdGVSdW5lIChyIDx0eXBlIC0yMT4pIChzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTQzPikgV3JpdGVCeXRlIChjIDx0eXBlIC0yMD4pIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDE0Mz4pIFdyaXRlIChwIDx0eXBlIDE0NCBbXSA8dHlwZSAtMjA+PikgKG5uIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTQzPikgRmx1c2ggKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMTQzPikgQXZhaWxhYmxlICgpIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDE0Mz4pIC5idWZpby5mbHVzaCAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAxNDM+KSBCdWZmZXJlZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAxNDM+KSBSZXNldCAodyA8dHlwZSAyOT4pOwo+PjsgLmVuY29kaW5nL3htbC5lbmNvZGVyIDx0eXBlIDE0NSAqPHR5cGUgMTM1Pj47IC5lbmNvZGluZy94bWwuc2VxIDx0eXBlIC0xMT47IC5lbmNvZGluZy94bWwuaW5kZW50IDx0eXBlIC0xNj47IC5lbmNvZGluZy94bWwucHJlZml4IDx0eXBlIC0xNj47IC5lbmNvZGluZy94bWwuZGVwdGggPHR5cGUgLTExPjsgLmVuY29kaW5nL3htbC5pbmRlbnRlZEluIDx0eXBlIC0xNT47IC5lbmNvZGluZy94bWwucHV0TmV3bGluZSA8dHlwZSAtMTU+OyAuZW5jb2RpbmcveG1sLmF0dHJOUyA8dHlwZSAxNDYgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTY+PjsgLmVuY29kaW5nL3htbC5hdHRyUHJlZml4IDx0eXBlIDE0NyBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIC0xNj4+OyAuZW5jb2RpbmcveG1sLnByZWZpeGVzIDx0eXBlIDE0OCBbXSA8dHlwZSAtMTY+PjsgLmVuY29kaW5nL3htbC50YWdzIDx0eXBlIDE0OSBbXSA8dHlwZSAzPj47IH0+CiBmdW5jIChwIDx0eXBlIDE1MCAqPHR5cGUgMTM3Pj4pIC5lbmNvZGluZy94bWwuY3JlYXRlQXR0clByZWZpeCAodXJsIDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChwIDx0eXBlIDE1MD4pIC5lbmNvZGluZy94bWwuZGVsZXRlQXR0clByZWZpeCAocHJlZml4IDx0eXBlIC0xNj4pOwogZnVuYyAocCA8dHlwZSAxNTA+KSAuZW5jb2RpbmcveG1sLm1hcmtQcmVmaXggKCk7CiBmdW5jIChwIDx0eXBlIDE1MD4pIC5lbmNvZGluZy94bWwucG9wUHJlZml4ICgpOwogZnVuYyAocCA8dHlwZSAxNTA+KSAuZW5jb2RpbmcveG1sLm1hcnNoYWxWYWx1ZSAodmFsIDx0eXBlIDY0PiwgZmluZm8gPHR5cGUgMTUxICo8dHlwZSAxMTc+Piwgc3RhcnRUZW1wbGF0ZSA8dHlwZSAxNTIgKjx0eXBlIDQ4Pj4pIDx0eXBlIC0xOT47CiBmdW5jIChwIDx0eXBlIDE1MD4pIC5lbmNvZGluZy94bWwubWFyc2hhbEludGVyZmFjZSAodmFsIDx0eXBlIDE1MyAiTWFyc2hhbGVyIiA8dHlwZSAxNTQgaW50ZXJmYWNlIHsgTWFyc2hhbFhNTCAoZSA8dHlwZSAxNTUgKjx0eXBlIDEzNT4+LCBzdGFydCA8dHlwZSA0OD4pIDx0eXBlIC0xOT47IH0+Piwgc3RhcnQgPHR5cGUgNDg+KSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSAxNTA+KSAuZW5jb2RpbmcveG1sLm1hcnNoYWxUZXh0SW50ZXJmYWNlICh2YWwgPHR5cGUgMTU2ICJlbmNvZGluZy5UZXh0TWFyc2hhbGVyIiA8dHlwZSAxNTcgaW50ZXJmYWNlIHsgTWFyc2hhbFRleHQgKCkgKHRleHQgPHR5cGUgMTU4IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7IH0+Piwgc3RhcnQgPHR5cGUgNDg+KSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSAxNTA+KSAuZW5jb2RpbmcveG1sLndyaXRlU3RhcnQgKHN0YXJ0IDx0eXBlIDE1OSAqPHR5cGUgNDg+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHAgPHR5cGUgMTUwPikgLmVuY29kaW5nL3htbC53cml0ZUVuZCAobmFtZSA8dHlwZSAzPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHAgPHR5cGUgMTUwPikgLmVuY29kaW5nL3htbC5tYXJzaGFsU2ltcGxlICh0eXAgPHR5cGUgODI+LCB2YWwgPHR5cGUgNjQ+KSAoPyA8dHlwZSAtMTY+LCA/IDx0eXBlIDE2MCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHAgPHR5cGUgMTUwPikgLmVuY29kaW5nL3htbC5tYXJzaGFsU3RydWN0ICh0aW5mbyA8dHlwZSAxNjEgKjx0eXBlIDExND4+LCB2YWwgPHR5cGUgNjQ+KSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSAxNTA+KSAuZW5jb2RpbmcveG1sLmNhY2hlZFdyaXRlRXJyb3IgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHAgPHR5cGUgMTUwPikgLmVuY29kaW5nL3htbC53cml0ZUluZGVudCAoZGVwdGhEZWx0YSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHAgPHR5cGUgMTUwPikgRXNjYXBlU3RyaW5nIChzIDx0eXBlIC0xNj4pOwo+OyB9PgogZnVuYyAoZW5jIDx0eXBlIDE0NT4pIEluZGVudCAocHJlZml4IDx0eXBlIC0xNj4sIGluZGVudCA8dHlwZSAtMTY+KTsKIGZ1bmMgKGVuYyA8dHlwZSAxNDU+KSBFbmNvZGUgKHYgPHR5cGUgMTYyIGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTk+OwogZnVuYyAoZW5jIDx0eXBlIDE0NT4pIEVuY29kZUVsZW1lbnQgKHYgPHR5cGUgMTYzIGludGVyZmFjZSB7IH0+LCBzdGFydCA8dHlwZSA0OD4pIDx0eXBlIC0xOT47CiBmdW5jIChlbmMgPHR5cGUgMTQ1PikgRW5jb2RlVG9rZW4gKHQgPHR5cGUgOT4pIDx0eXBlIC0xOT47CiBmdW5jIChlbmMgPHR5cGUgMTQ1PikgRmx1c2ggKCkgPHR5cGUgLTE5PjsKPjsKdHlwZSA8dHlwZSA1MT47CmZ1bmMgRXNjYXBlICh3IDx0eXBlIDI5PiwgcyA8dHlwZSAxNjQgW10gPHR5cGUgLTIwPj4pOwpmdW5jIEVzY2FwZVRleHQgKHcgPHR5cGUgMjk+LCBzIDx0eXBlIDE2NSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKdmFyIEhUTUxBdXRvQ2xvc2UgPHR5cGUgMTY2IFtdIDx0eXBlIC0xNj4+Owp2YXIgSFRNTEVudGl0eSA8dHlwZSAxNjcgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTY+PjsKY29uc3QgSGVhZGVyID0gIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIjsKZnVuYyBNYXJzaGFsICh2IDx0eXBlIDE2OCBpbnRlcmZhY2UgeyB9PikgKD8gPHR5cGUgMTY5IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIE1hcnNoYWxJbmRlbnQgKHYgPHR5cGUgMTcwIGludGVyZmFjZSB7IH0+LCBwcmVmaXggPHR5cGUgLTE2PiwgaW5kZW50IDx0eXBlIC0xNj4pICg/IDx0eXBlIDE3MSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSAxNTM+Owp0eXBlIDx0eXBlIDE3MiAiTWFyc2hhbGVyQXR0ciIgPHR5cGUgMTczIGludGVyZmFjZSB7IE1hcnNoYWxYTUxBdHRyIChuYW1lIDx0eXBlIDM+KSAoPyA8dHlwZSAxPiwgPyA8dHlwZSAtMTk+KTsgfT4+Owp0eXBlIDx0eXBlIDM+OwpmdW5jIE5ld0RlY29kZXIgKHIgPHR5cGUgMTY+KSA8dHlwZSAxMjc+OwpmdW5jIE5ld0VuY29kZXIgKHcgPHR5cGUgMjk+KSA8dHlwZSAxNDU+Owp0eXBlIDx0eXBlIDE3NCAiUHJvY0luc3QiIDx0eXBlIDE3NSBzdHJ1Y3QgeyBUYXJnZXQgPHR5cGUgLTE2PjsgSW5zdCA8dHlwZSAxNzYgW10gPHR5cGUgLTIwPj47IH0+CiBmdW5jIChwIDx0eXBlIDE3ND4pIENvcHkgKCkgPHR5cGUgMTc0PjsKPjsKdHlwZSA8dHlwZSA0OD47CnR5cGUgPHR5cGUgMTc3ICJTeW50YXhFcnJvciIgPHR5cGUgMTc4IHN0cnVjdCB7IE1zZyA8dHlwZSAtMTY+OyBMaW5lIDx0eXBlIC0xMT47IH0+CiBmdW5jIChlIDx0eXBlIDE3OSAqPHR5cGUgMTc3Pj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgMTgwICJUYWdQYXRoRXJyb3IiIDx0eXBlIDE4MSBzdHJ1Y3QgeyBTdHJ1Y3QgPHR5cGUgODI+OyBGaWVsZDEgPHR5cGUgLTE2PjsgVGFnMSA8dHlwZSAtMTY+OyBGaWVsZDIgPHR5cGUgLTE2PjsgVGFnMiA8dHlwZSAtMTY+OyB9PgogZnVuYyAoZSA8dHlwZSAxODIgKjx0eXBlIDE4MD4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+Owp0eXBlIDx0eXBlIDk+OwpmdW5jIFVubWFyc2hhbCAoZGF0YSA8dHlwZSAxODMgW10gPHR5cGUgLTIwPj4sIHYgPHR5cGUgMTg0IGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTk+Owp0eXBlIDx0eXBlIDE4NSAiVW5tYXJzaGFsRXJyb3IiIDx0eXBlIC0xNj4KIGZ1bmMgKGUgPHR5cGUgMTg1PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKdHlwZSA8dHlwZSA1ND47CnR5cGUgPHR5cGUgMTg2ICJVbm1hcnNoYWxlckF0dHIiIDx0eXBlIDE4NyBpbnRlcmZhY2UgeyBVbm1hcnNoYWxYTUxBdHRyIChhdHRyIDx0eXBlIDE+KSA8dHlwZSAtMTk+OyB9Pj47CnR5cGUgPHR5cGUgMTg4ICJVbnN1cHBvcnRlZFR5cGVFcnJvciIgPHR5cGUgMTg5IHN0cnVjdCB7IFR5cGUgPHR5cGUgODI+OyB9PgogZnVuYyAoZSA8dHlwZSAxOTAgKjx0eXBlIDE4OD4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+OwpjaGVja3N1bSA1MjIyMzEyODM0RkEwM0Q4REFDMThFMzEyMDU3NUIyQ0Q2NEFCRDczOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAFtRAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAI9RAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAC4UQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAA2FEAAAEAAAAAAAAAAAAAAAEAAAAAAAAA