f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAADwbwAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHRlbXBsYXRlOwpwa2dwYXRoIGh0bWwvdGVtcGxhdGU7CnByaW9yaXR5IDk7CmltcG9ydCBieXRlcyBieXRlcyAiYnl0ZXMiOwppbXBvcnQganNvbiBlbmNvZGluZy9qc29uICJlbmNvZGluZy9qc29uIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCBodG1sIGh0bWwgImh0bWwiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IGlvdXRpbCBpby9pb3V0aWwgImlvL2lvdXRpbCI7CmltcG9ydCBmaWxlcGF0aCBwYXRoL2ZpbGVwYXRoICJwYXRoL2ZpbGVwYXRoIjsKaW1wb3J0IHJlZmxlY3QgcmVmbGVjdCAicmVmbGVjdCI7CmltcG9ydCBzdHJpbmdzIHN0cmluZ3MgInN0cmluZ3MiOwppbXBvcnQgc3luYyBzeW5jICJzeW5jIjsKaW1wb3J0IHRlbXBsYXRlIHRleHQvdGVtcGxhdGUgInRleHQvdGVtcGxhdGUiOwppbXBvcnQgcGFyc2UgdGV4dC90ZW1wbGF0ZS9wYXJzZSAidGV4dC90ZW1wbGF0ZS9wYXJzZSI7CmltcG9ydCB1bmljb2RlIHVuaWNvZGUgInVuaWNvZGUiOwppbXBvcnQgdXRmOCB1bmljb2RlL3V0ZjggInVuaWNvZGUvdXRmOCI7CmluaXQgdGVtcGxhdGUgaHRtbF90ZW1wbGF0ZS4uaW1wb3J0IDkgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgYmFzZTY0IGVuY29kaW5nX2Jhc2U2NC4uaW1wb3J0IDUgaHRtbCBodG1sLi5pbXBvcnQgNSBvcyBvcy4uaW1wb3J0IDUgZmlsZXBhdGggcGF0aF9maWxlcGF0aC4uaW1wb3J0IDYgZm10IGZtdC4uaW1wb3J0IDYgaW91dGlsIGlvX2lvdXRpbC4uaW1wb3J0IDcganNvbiBlbmNvZGluZ19qc29uLi5pbXBvcnQgNyBwYXJzZSB0ZXh0X3RlbXBsYXRlX3BhcnNlLi5pbXBvcnQgNyB0ZW1wbGF0ZSB0ZXh0X3RlbXBsYXRlLi5pbXBvcnQgODsKdHlwZSA8dHlwZSAxICJDU1MiIDx0eXBlIC0xNj4+Owpjb25zdCBFcnJBbWJpZ0NvbnRleHQgPHR5cGUgMiAiRXJyb3JDb2RlIiA8dHlwZSAtMTE+PiA9IDEgOwpjb25zdCBFcnJCYWRIVE1MIDx0eXBlIDI+ID0gMiA7CmNvbnN0IEVyckJyYW5jaEVuZCA8dHlwZSAyPiA9IDMgOwpjb25zdCBFcnJFbmRDb250ZXh0IDx0eXBlIDI+ID0gNCA7CmNvbnN0IEVyck5vU3VjaFRlbXBsYXRlIDx0eXBlIDI+ID0gNSA7CmNvbnN0IEVyck91dHB1dENvbnRleHQgPHR5cGUgMj4gPSA2IDsKY29uc3QgRXJyUGFydGlhbENoYXJzZXQgPHR5cGUgMj4gPSA3IDsKY29uc3QgRXJyUGFydGlhbEVzY2FwZSA8dHlwZSAyPiA9IDggOwpjb25zdCBFcnJSYW5nZUxvb3BSZWVudHJ5IDx0eXBlIDI+ID0gOSA7CmNvbnN0IEVyclNsYXNoQW1iaWcgPHR5cGUgMj4gPSAxMCA7CnR5cGUgPHR5cGUgMyAiRXJyb3IiIDx0eXBlIDQgc3RydWN0IHsgRXJyb3JDb2RlIDx0eXBlIDI+OyBOb2RlIDx0eXBlIDUgInRleHQvdGVtcGxhdGUvcGFyc2UuTm9kZSIgPHR5cGUgNiBpbnRlcmZhY2UgeyBUeXBlICgpIDx0eXBlIDcgInRleHQvdGVtcGxhdGUvcGFyc2UuTm9kZVR5cGUiIDx0eXBlIC0xMT4KIGZ1bmMgKHQgPHR5cGUgNz4pIFR5cGUgKCkgPHR5cGUgNz47Cj47IFN0cmluZyAoKSA8dHlwZSAtMTY+OyBDb3B5ICgpIDx0eXBlIDU+OyBQb3NpdGlvbiAoKSA8dHlwZSA4ICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLlBvcyIgPHR5cGUgLTExPgogZnVuYyAocCA8dHlwZSA4PikgUG9zaXRpb24gKCkgPHR5cGUgOD47Cj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgOSAqPHR5cGUgMTAgInRleHQvdGVtcGxhdGUvcGFyc2UuVHJlZSIgPHR5cGUgMTEgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQYXJzZU5hbWUgPHR5cGUgLTE2PjsgUm9vdCA8dHlwZSAxMiAqPHR5cGUgMTMgInRleHQvdGVtcGxhdGUvcGFyc2UuTGlzdE5vZGUiIDx0eXBlIDE0IHN0cnVjdCB7ID8gPHR5cGUgNz47ID8gPHR5cGUgOD47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDE1ICo8dHlwZSAxMD4+OyBOb2RlcyA8dHlwZSAxNiBbXSA8dHlwZSA1Pj47IH0+CiBmdW5jIChsIDx0eXBlIDE3ICo8dHlwZSAxMz4+KSBDb3B5TGlzdCAoKSA8dHlwZSAxNz47CiBmdW5jIChsIDx0eXBlIDE3PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuYXBwZW5kIChuIDx0eXBlIDU+KTsKIGZ1bmMgKGwgPHR5cGUgMTc+KSBDb3B5ICgpIDx0eXBlIDU+OwogZnVuYyAobCA8dHlwZSAxNz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobCA8dHlwZSAxNz4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgMTU+Owo+PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudGV4dCA8dHlwZSAtMTY+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS5mdW5jcyA8dHlwZSAxOCBbXSA8dHlwZSAxOSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDIwIGludGVyZmFjZSB7IH0+Pj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLmxleCA8dHlwZSAyMSAqPHR5cGUgMjIgIi50ZXh0L3RlbXBsYXRlL3BhcnNlLmxleGVyIiA8dHlwZSAyMyBzdHJ1Y3QgeyAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uYW1lIDx0eXBlIC0xNj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLmlucHV0IDx0eXBlIC0xNj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLmxlZnREZWxpbSA8dHlwZSAtMTY+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS5yaWdodERlbGltIDx0eXBlIC0xNj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnN0YXRlIDx0eXBlIDI0ICIudGV4dC90ZW1wbGF0ZS9wYXJzZS5zdGF0ZUZuIiA8dHlwZSAyNSAoPyA8dHlwZSAyNiAqPHR5cGUgMjI+PikgPHR5cGUgMjQ+Pj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnBvcyA8dHlwZSA4PjsgLnRleHQvdGVtcGxhdGUvcGFyc2Uuc3RhcnQgPHR5cGUgOD47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLndpZHRoIDx0eXBlIDg+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS5sYXN0UG9zIDx0eXBlIDg+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS5pdGVtcyA8dHlwZSAyNyBjaGFuIDx0eXBlIDI4ICIudGV4dC90ZW1wbGF0ZS9wYXJzZS5pdGVtIiA8dHlwZSAyOSBzdHJ1Y3QgeyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50eXAgPHR5cGUgMzAgIi50ZXh0L3RlbXBsYXRlL3BhcnNlLml0ZW1UeXBlIiA8dHlwZSAtMTE+PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UucG9zIDx0eXBlIDg+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS52YWwgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGkgPHR5cGUgMjg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnBhcmVuRGVwdGggPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGwgPHR5cGUgMzEgKjx0eXBlIDIyPj4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnJ1biAoKTsKIGZ1bmMgKGwgPHR5cGUgMzE+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5hdFRlcm1pbmF0b3IgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgMzE+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5lbWl0ICh0IDx0eXBlIDMwPik7CiBmdW5jIChsIDx0eXBlIDMxPikgLnRleHQvdGVtcGxhdGUvcGFyc2Uuc2Nhbk51bWJlciAoKSA8dHlwZSAtMTU+OwogZnVuYyAobCA8dHlwZSAzMT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmlnbm9yZSAoKTsKIGZ1bmMgKGwgPHR5cGUgMzE+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5lcnJvcmYgKGZvcm1hdCA8dHlwZSAtMTY+LCBhcmdzIC4uLjx0eXBlIDMyIGludGVyZmFjZSB7IH0+KSA8dHlwZSAyND47CiBmdW5jIChsIDx0eXBlIDMxPikgLnRleHQvdGVtcGxhdGUvcGFyc2UuYmFja3VwICgpOwogZnVuYyAobCA8dHlwZSAzMT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmxpbmVOdW1iZXIgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGwgPHR5cGUgMzE+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wZWVrICgpIDx0eXBlIC0yMT47CiBmdW5jIChsIDx0eXBlIDMxPikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV4dCAoKSA8dHlwZSAtMjE+OwogZnVuYyAobCA8dHlwZSAzMT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5leHRJdGVtICgpIDx0eXBlIDI4PjsKIGZ1bmMgKGwgPHR5cGUgMzE+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5hY2NlcHQgKHZhbGlkIDx0eXBlIC0xNj4pIDx0eXBlIC0xNT47CiBmdW5jIChsIDx0eXBlIDMxPikgLnRleHQvdGVtcGxhdGUvcGFyc2UuYWNjZXB0UnVuICh2YWxpZCA8dHlwZSAtMTY+KTsKPj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRva2VuIDx0eXBlIDMzIFszIF0gPHR5cGUgMjg+PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UucGVla0NvdW50IDx0eXBlIC0xMT47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnZhcnMgPHR5cGUgMzQgW10gPHR5cGUgLTE2Pj47IH0+CiBmdW5jICh0IDx0eXBlIDM1ICo8dHlwZSAxMD4+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdTdHJpbmcgKHBvcyA8dHlwZSA4Piwgb3JpZyA8dHlwZSAtMTY+LCB0ZXh0IDx0eXBlIC0xNj4pIDx0eXBlIDM2ICo8dHlwZSAzNyAidGV4dC90ZW1wbGF0ZS9wYXJzZS5TdHJpbmdOb2RlIiA8dHlwZSAzOCBzdHJ1Y3QgeyA/IDx0eXBlIDc+OyA/IDx0eXBlIDg+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSAzNT47IFF1b3RlZCA8dHlwZSAtMTY+OyBUZXh0IDx0eXBlIC0xNj47IH0+CiBmdW5jIChzIDx0eXBlIDM5ICo8dHlwZSAzNz4+KSBDb3B5ICgpIDx0eXBlIDU+OwogZnVuYyAocyA8dHlwZSAzOT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAocyA8dHlwZSAzOT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgMzU+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5jb21tYW5kICgpIDx0eXBlIDQwICo8dHlwZSA0MSAidGV4dC90ZW1wbGF0ZS9wYXJzZS5Db21tYW5kTm9kZSIgPHR5cGUgNDIgc3RydWN0IHsgPyA8dHlwZSA3PjsgPyA8dHlwZSA4PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgMzU+OyBBcmdzIDx0eXBlIDQzIFtdIDx0eXBlIDU+PjsgfT4KIGZ1bmMgKGMgPHR5cGUgNDQgKjx0eXBlIDQxPj4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmFwcGVuZCAoYXJnIDx0eXBlIDU+KTsKIGZ1bmMgKGMgPHR5cGUgNDQ+KSBDb3B5ICgpIDx0eXBlIDU+OwogZnVuYyAoYyA8dHlwZSA0ND4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYyA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgMzU+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ZW1wbGF0ZUNvbnRyb2wgKCkgPHR5cGUgNT47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuYWN0aW9uICgpIChuIDx0eXBlIDU+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wZWVrICgpIDx0eXBlIDI4PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBQYXJzZSAodGV4dCA8dHlwZSAtMTY+LCBsZWZ0RGVsaW0gPHR5cGUgLTE2PiwgcmlnaHREZWxpbSA8dHlwZSAtMTY+LCB0cmVlU2V0IDx0eXBlIDQ1IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMzU+PiwgZnVuY3MgLi4uPHR5cGUgNDYgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA0NyBpbnRlcmZhY2UgeyB9Pj4pICh0cmVlIDx0eXBlIDM1PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmJhY2t1cDMgKHQyIDx0eXBlIDI4PiwgdDEgPHR5cGUgMjg+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5zdGFydFBhcnNlIChmdW5jcyA8dHlwZSA0OCBbXSA8dHlwZSA0OSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDUwIGludGVyZmFjZSB7IH0+Pj4sIGxleCA8dHlwZSAyMT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld0RvdCAocG9zIDx0eXBlIDg+KSA8dHlwZSA1MSAqPHR5cGUgNTIgInRleHQvdGVtcGxhdGUvcGFyc2UuRG90Tm9kZSIgPHR5cGUgNTMgc3RydWN0IHsgPyA8dHlwZSA3PjsgPyA8dHlwZSA4PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgMzU+OyB9PgogZnVuYyAoZCA8dHlwZSA1NCAqPHR5cGUgNTI+PikgQ29weSAoKSA8dHlwZSA1PjsKIGZ1bmMgKGQgPHR5cGUgNTQ+KSBUeXBlICgpIDx0eXBlIDc+OwogZnVuYyAoZCA8dHlwZSA1ND4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZCA8dHlwZSA1ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgMzU+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5lcnJvciAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5leHROb25TcGFjZSAoKSAodG9rZW4gPHR5cGUgMjg+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXh0ICgpIDx0eXBlIDI4PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5iYWNrdXAgKCk7CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuaGFzRnVuY3Rpb24gKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdUZW1wbGF0ZSAocG9zIDx0eXBlIDg+LCBsaW5lIDx0eXBlIC0xMT4sIG5hbWUgPHR5cGUgLTE2PiwgcGlwZSA8dHlwZSA1NSAqPHR5cGUgNTYgInRleHQvdGVtcGxhdGUvcGFyc2UuUGlwZU5vZGUiIDx0eXBlIDU3IHN0cnVjdCB7ID8gPHR5cGUgNz47ID8gPHR5cGUgOD47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDM1PjsgTGluZSA8dHlwZSAtMTE+OyBEZWNsIDx0eXBlIDU4IFtdIDx0eXBlIDU5ICo8dHlwZSA2MCAidGV4dC90ZW1wbGF0ZS9wYXJzZS5WYXJpYWJsZU5vZGUiIDx0eXBlIDYxIHN0cnVjdCB7ID8gPHR5cGUgNz47ID8gPHR5cGUgOD47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDM1PjsgSWRlbnQgPHR5cGUgNjIgW10gPHR5cGUgLTE2Pj47IH0+CiBmdW5jICh2IDx0eXBlIDYzICo8dHlwZSA2MD4+KSBDb3B5ICgpIDx0eXBlIDU+OwogZnVuYyAodiA8dHlwZSA2Mz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSA2Mz4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgMzU+Owo+Pj47IENtZHMgPHR5cGUgNjQgW10gPHR5cGUgNDA+PjsgfT4KIGZ1bmMgKHAgPHR5cGUgNjUgKjx0eXBlIDU2Pj4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmFwcGVuZCAoY29tbWFuZCA8dHlwZSA0MD4pOwogZnVuYyAocCA8dHlwZSA2NT4pIENvcHkgKCkgPHR5cGUgNT47CiBmdW5jIChwIDx0eXBlIDY1PikgQ29weVBpcGUgKCkgPHR5cGUgNjU+OwogZnVuYyAocCA8dHlwZSA2NT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAocCA8dHlwZSA2NT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgMzU+Owo+PikgPHR5cGUgNjYgKjx0eXBlIDY3ICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLlRlbXBsYXRlTm9kZSIgPHR5cGUgNjggc3RydWN0IHsgPyA8dHlwZSA3PjsgPyA8dHlwZSA4PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgMzU+OyBMaW5lIDx0eXBlIC0xMT47IE5hbWUgPHR5cGUgLTE2PjsgUGlwZSA8dHlwZSA1NT47IH0+CiBmdW5jICh0IDx0eXBlIDY5ICo8dHlwZSA2Nz4+KSBDb3B5ICgpIDx0eXBlIDU+OwogZnVuYyAodCA8dHlwZSA2OT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA2OT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgMzU+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdGaWVsZCAocG9zIDx0eXBlIDg+LCBpZGVudCA8dHlwZSAtMTY+KSA8dHlwZSA3MCAqPHR5cGUgNzEgInRleHQvdGVtcGxhdGUvcGFyc2UuRmllbGROb2RlIiA8dHlwZSA3MiBzdHJ1Y3QgeyA/IDx0eXBlIDc+OyA/IDx0eXBlIDg+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSAzNT47IElkZW50IDx0eXBlIDczIFtdIDx0eXBlIC0xNj4+OyB9PgogZnVuYyAoZiA8dHlwZSA3NCAqPHR5cGUgNzE+PikgQ29weSAoKSA8dHlwZSA1PjsKIGZ1bmMgKGYgPHR5cGUgNzQ+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGYgPHR5cGUgNzQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDM1PjsKPj47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuZW5kQ29udHJvbCAoKSA8dHlwZSA1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5lbHNlQ29udHJvbCAoKSA8dHlwZSA1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wYXJzZURlZmluaXRpb24gKHRyZWVTZXQgPHR5cGUgNzUgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAzNT4+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5waXBlbGluZSAoY29udGV4dCA8dHlwZSAtMTY+KSAocGlwZSA8dHlwZSA1NT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmV4cGVjdE9uZU9mIChleHBlY3RlZDEgPHR5cGUgMzA+LCBleHBlY3RlZDIgPHR5cGUgMzA+LCBjb250ZXh0IDx0eXBlIC0xNj4pIDx0eXBlIDI4PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS51c2VWYXIgKHBvcyA8dHlwZSA4PiwgbmFtZSA8dHlwZSAtMTY+KSA8dHlwZSA1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5hZGQgKHRyZWVTZXQgPHR5cGUgNzYgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAzNT4+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wZWVrTm9uU3BhY2UgKCkgKHRva2VuIDx0eXBlIDI4Pik7CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3UGlwZWxpbmUgKHBvcyA8dHlwZSA4PiwgbGluZSA8dHlwZSAtMTE+LCBkZWNsIDx0eXBlIDc3IFtdIDx0eXBlIDU5Pj4pIDx0eXBlIDU1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS51bmV4cGVjdGVkICh0b2tlbiA8dHlwZSAyOD4sIGNvbnRleHQgPHR5cGUgLTE2Pik7CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuaXRlbUxpc3QgKCkgKGxpc3QgPHR5cGUgMTI+LCBuZXh0IDx0eXBlIDU+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdSYW5nZSAocG9zIDx0eXBlIDg+LCBsaW5lIDx0eXBlIC0xMT4sIHBpcGUgPHR5cGUgNTU+LCBsaXN0IDx0eXBlIDEyPiwgZWxzZUxpc3QgPHR5cGUgMTI+KSA8dHlwZSA3OCAqPHR5cGUgNzkgInRleHQvdGVtcGxhdGUvcGFyc2UuUmFuZ2VOb2RlIiA8dHlwZSA4MCBzdHJ1Y3QgeyA/IDx0eXBlIDgxICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLkJyYW5jaE5vZGUiIDx0eXBlIDgyIHN0cnVjdCB7ID8gPHR5cGUgNz47ID8gPHR5cGUgOD47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDM1PjsgTGluZSA8dHlwZSAtMTE+OyBQaXBlIDx0eXBlIDU1PjsgTGlzdCA8dHlwZSAxMj47IEVsc2VMaXN0IDx0eXBlIDEyPjsgfT4KIGZ1bmMgKGIgPHR5cGUgODMgKjx0eXBlIDgxPj4pIENvcHkgKCkgPHR5cGUgNT47CiBmdW5jIChiIDx0eXBlIDgzPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChiIDx0eXBlIDgzPikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSAzNT47Cj47IH0+CiBmdW5jIChyIDx0eXBlIDg0ICo8dHlwZSA3OT4+KSBDb3B5ICgpIDx0eXBlIDU+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdXaXRoIChwb3MgPHR5cGUgOD4sIGxpbmUgPHR5cGUgLTExPiwgcGlwZSA8dHlwZSA1NT4sIGxpc3QgPHR5cGUgMTI+LCBlbHNlTGlzdCA8dHlwZSAxMj4pIDx0eXBlIDg1ICo8dHlwZSA4NiAidGV4dC90ZW1wbGF0ZS9wYXJzZS5XaXRoTm9kZSIgPHR5cGUgODcgc3RydWN0IHsgPyA8dHlwZSA4MT47IH0+CiBmdW5jICh3IDx0eXBlIDg4ICo8dHlwZSA4Nj4+KSBDb3B5ICgpIDx0eXBlIDU+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdOdW1iZXIgKHBvcyA8dHlwZSA4PiwgdGV4dCA8dHlwZSAtMTY+LCB0eXAgPHR5cGUgMzA+KSAoPyA8dHlwZSA4OSAqPHR5cGUgOTAgInRleHQvdGVtcGxhdGUvcGFyc2UuTnVtYmVyTm9kZSIgPHR5cGUgOTEgc3RydWN0IHsgPyA8dHlwZSA3PjsgPyA8dHlwZSA4PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgMzU+OyBJc0ludCA8dHlwZSAtMTU+OyBJc1VpbnQgPHR5cGUgLTE1PjsgSXNGbG9hdCA8dHlwZSAtMTU+OyBJc0NvbXBsZXggPHR5cGUgLTE1PjsgSW50NjQgPHR5cGUgLTQ+OyBVaW50NjQgPHR5cGUgLTg+OyBGbG9hdDY0IDx0eXBlIC0xMD47IENvbXBsZXgxMjggPHR5cGUgLTE4PjsgVGV4dCA8dHlwZSAtMTY+OyB9PgogZnVuYyAobiA8dHlwZSA5MiAqPHR5cGUgOTA+PikgQ29weSAoKSA8dHlwZSA1PjsKIGZ1bmMgKG4gPHR5cGUgOTI+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5zaW1wbGlmeUNvbXBsZXggKCk7CiBmdW5jIChuIDx0eXBlIDkyPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChuIDx0eXBlIDkyPikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSAzNT47Cj4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld0NvbW1hbmQgKHBvcyA8dHlwZSA4PikgPHR5cGUgNDA+OwogZnVuYyAodCA8dHlwZSAzNT4pIENvcHkgKCkgPHR5cGUgMzU+OwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld0FjdGlvbiAocG9zIDx0eXBlIDg+LCBsaW5lIDx0eXBlIC0xMT4sIHBpcGUgPHR5cGUgNTU+KSA8dHlwZSA5MyAqPHR5cGUgOTQgInRleHQvdGVtcGxhdGUvcGFyc2UuQWN0aW9uTm9kZSIgPHR5cGUgOTUgc3RydWN0IHsgPyA8dHlwZSA3PjsgPyA8dHlwZSA4PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgMzU+OyBMaW5lIDx0eXBlIC0xMT47IFBpcGUgPHR5cGUgNTU+OyB9PgogZnVuYyAoYSA8dHlwZSA5NiAqPHR5cGUgOTQ+PikgQ29weSAoKSA8dHlwZSA1PjsKIGZ1bmMgKGEgPHR5cGUgOTY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGEgPHR5cGUgOTY+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDM1PjsKPj47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3VGV4dCAocG9zIDx0eXBlIDg+LCB0ZXh0IDx0eXBlIC0xNj4pIDx0eXBlIDk3ICo8dHlwZSA5OCAidGV4dC90ZW1wbGF0ZS9wYXJzZS5UZXh0Tm9kZSIgPHR5cGUgOTkgc3RydWN0IHsgPyA8dHlwZSA3PjsgPyA8dHlwZSA4PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgMzU+OyBUZXh0IDx0eXBlIDEwMCBbXSA8dHlwZSAtMjA+PjsgfT4KIGZ1bmMgKHQgPHR5cGUgMTAxICo8dHlwZSA5OD4+KSBDb3B5ICgpIDx0eXBlIDU+OwogZnVuYyAodCA8dHlwZSAxMDE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTAxPikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSAzNT47Cj4+OwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld0Jvb2wgKHBvcyA8dHlwZSA4PiwgdHJ1ZSA8dHlwZSAtMTU+KSA8dHlwZSAxMDIgKjx0eXBlIDEwMyAidGV4dC90ZW1wbGF0ZS9wYXJzZS5Cb29sTm9kZSIgPHR5cGUgMTA0IHN0cnVjdCB7ID8gPHR5cGUgNz47ID8gPHR5cGUgOD47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDM1PjsgVHJ1ZSA8dHlwZSAtMTU+OyB9PgogZnVuYyAoYiA8dHlwZSAxMDUgKjx0eXBlIDEwMz4+KSBDb3B5ICgpIDx0eXBlIDU+OwogZnVuYyAoYiA8dHlwZSAxMDU+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGIgPHR5cGUgMTA1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSAzNT47Cj4+OwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLndpdGhDb250cm9sICgpIDx0eXBlIDU+OwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmlmQ29udHJvbCAoKSA8dHlwZSA1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5yYW5nZUNvbnRyb2wgKCkgPHR5cGUgNT47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UudGVybSAoKSA8dHlwZSA1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdOaWwgKHBvcyA8dHlwZSA4PikgPHR5cGUgMTA2ICo8dHlwZSAxMDcgInRleHQvdGVtcGxhdGUvcGFyc2UuTmlsTm9kZSIgPHR5cGUgMTA4IHN0cnVjdCB7ID8gPHR5cGUgNz47ID8gPHR5cGUgOD47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDM1PjsgfT4KIGZ1bmMgKG4gPHR5cGUgMTA5ICo8dHlwZSAxMDc+PikgQ29weSAoKSA8dHlwZSA1PjsKIGZ1bmMgKG4gPHR5cGUgMTA5PikgVHlwZSAoKSA8dHlwZSA3PjsKIGZ1bmMgKG4gPHR5cGUgMTA5PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChuIDx0eXBlIDEwOT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgMzU+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdFbmQgKHBvcyA8dHlwZSA4PikgPHR5cGUgMTEwICo8dHlwZSAxMTEgIi50ZXh0L3RlbXBsYXRlL3BhcnNlLmVuZE5vZGUiIDx0eXBlIDExMiBzdHJ1Y3QgeyA/IDx0eXBlIDc+OyA/IDx0eXBlIDg+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSAzNT47IH0+CiBmdW5jIChlIDx0eXBlIDExMyAqPHR5cGUgMTExPj4pIENvcHkgKCkgPHR5cGUgNT47CiBmdW5jIChlIDx0eXBlIDExMz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZSA8dHlwZSAxMTM+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDM1PjsKPj47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UucGFyc2VDb250cm9sIChhbGxvd0Vsc2VJZiA8dHlwZSAtMTU+LCBjb250ZXh0IDx0eXBlIC0xNj4pIChwb3MgPHR5cGUgOD4sIGxpbmUgPHR5cGUgLTExPiwgcGlwZSA8dHlwZSA1NT4sIGxpc3QgPHR5cGUgMTI+LCBlbHNlTGlzdCA8dHlwZSAxMj4pOwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm9wZXJhbmQgKCkgPHR5cGUgNT47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuZXJyb3JmIChmb3JtYXQgPHR5cGUgLTE2PiwgYXJncyAuLi48dHlwZSAxMTQgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnJlY292ZXIgKGVycnAgPHR5cGUgMTE1ICo8dHlwZSAtMTk+Pik7CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3TGlzdCAocG9zIDx0eXBlIDg+KSA8dHlwZSAxMj47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3RWxzZSAocG9zIDx0eXBlIDg+LCBsaW5lIDx0eXBlIC0xMT4pIDx0eXBlIDExNiAqPHR5cGUgMTE3ICIudGV4dC90ZW1wbGF0ZS9wYXJzZS5lbHNlTm9kZSIgPHR5cGUgMTE4IHN0cnVjdCB7ID8gPHR5cGUgNz47ID8gPHR5cGUgOD47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDM1PjsgTGluZSA8dHlwZSAtMTE+OyB9PgogZnVuYyAoZSA8dHlwZSAxMTkgKjx0eXBlIDExNz4+KSBDb3B5ICgpIDx0eXBlIDU+OwogZnVuYyAoZSA8dHlwZSAxMTk+KSBUeXBlICgpIDx0eXBlIDc+OwogZnVuYyAoZSA8dHlwZSAxMTk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGUgPHR5cGUgMTE5PikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSAzNT47Cj4+OwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld0lmIChwb3MgPHR5cGUgOD4sIGxpbmUgPHR5cGUgLTExPiwgcGlwZSA8dHlwZSA1NT4sIGxpc3QgPHR5cGUgMTI+LCBlbHNlTGlzdCA8dHlwZSAxMj4pIDx0eXBlIDEyMCAqPHR5cGUgMTIxICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLklmTm9kZSIgPHR5cGUgMTIyIHN0cnVjdCB7ID8gPHR5cGUgODE+OyB9PgogZnVuYyAoaSA8dHlwZSAxMjMgKjx0eXBlIDEyMT4+KSBDb3B5ICgpIDx0eXBlIDU+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5leHBlY3QgKGV4cGVjdGVkIDx0eXBlIDMwPiwgY29udGV4dCA8dHlwZSAtMTY+KSA8dHlwZSAyOD47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2Uuc3RvcFBhcnNlICgpOwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnBhcnNlICh0cmVlU2V0IDx0eXBlIDEyNCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDM1Pj4pIChuZXh0IDx0eXBlIDU+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5iYWNrdXAyICh0MSA8dHlwZSAyOD4pOwogZnVuYyAodCA8dHlwZSAzNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRleHRPckFjdGlvbiAoKSA8dHlwZSA1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wb3BWYXJzIChuIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIEVycm9yQ29udGV4dCAobiA8dHlwZSA1PikgKGxvY2F0aW9uIDx0eXBlIC0xNj4sIGNvbnRleHQgPHR5cGUgLTE2Pik7CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3Q2hhaW4gKHBvcyA8dHlwZSA4Piwgbm9kZSA8dHlwZSA1PikgPHR5cGUgMTI1ICo8dHlwZSAxMjYgInRleHQvdGVtcGxhdGUvcGFyc2UuQ2hhaW5Ob2RlIiA8dHlwZSAxMjcgc3RydWN0IHsgPyA8dHlwZSA3PjsgPyA8dHlwZSA4PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgMzU+OyBOb2RlIDx0eXBlIDU+OyBGaWVsZCA8dHlwZSAxMjggW10gPHR5cGUgLTE2Pj47IH0+CiBmdW5jIChjIDx0eXBlIDEyOSAqPHR5cGUgMTI2Pj4pIENvcHkgKCkgPHR5cGUgNT47CiBmdW5jIChjIDx0eXBlIDEyOT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYyA8dHlwZSAxMjk+KSBBZGQgKGZpZWxkIDx0eXBlIC0xNj4pOwogZnVuYyAoYyA8dHlwZSAxMjk+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDM1PjsKPj47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3VmFyaWFibGUgKHBvcyA8dHlwZSA4PiwgaWRlbnQgPHR5cGUgLTE2PikgPHR5cGUgNTk+Owo+PjsgfT4+OyBOYW1lIDx0eXBlIC0xNj47IExpbmUgPHR5cGUgLTExPjsgRGVzY3JpcHRpb24gPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTMwICo8dHlwZSAzPj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgMj47CnR5cGUgPHR5cGUgMTMxICJGdW5jTWFwIiA8dHlwZSAxMzIgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxMzMgaW50ZXJmYWNlIHsgfT4+PjsKdHlwZSA8dHlwZSAxMzQgIkhUTUwiIDx0eXBlIC0xNj4+Owp0eXBlIDx0eXBlIDEzNSAiSFRNTEF0dHIiIDx0eXBlIC0xNj4+OwpmdW5jIEhUTUxFc2NhcGUgKHcgPHR5cGUgMTM2ICJpby5Xcml0ZXIiIDx0eXBlIDEzNyBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSAxMzggW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCBiIDx0eXBlIDEzOSBbXSA8dHlwZSAtMjA+Pik7CmZ1bmMgSFRNTEVzY2FwZVN0cmluZyAocyA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwpmdW5jIEhUTUxFc2NhcGVyIChhcmdzIC4uLjx0eXBlIDE0MCBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE2PjsKdHlwZSA8dHlwZSAxNDEgIkpTIiA8dHlwZSAtMTY+PjsKZnVuYyBKU0VzY2FwZSAodyA8dHlwZSAxMzY+LCBiIDx0eXBlIDE0MiBbXSA8dHlwZSAtMjA+Pik7CmZ1bmMgSlNFc2NhcGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKZnVuYyBKU0VzY2FwZXIgKGFyZ3MgLi4uPHR5cGUgMTQzIGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTY+Owp0eXBlIDx0eXBlIDE0NCAiSlNTdHIiIDx0eXBlIC0xNj4+OwpmdW5jIE11c3QgKHQgPHR5cGUgMTQ1ICo8dHlwZSAxNDYgIlRlbXBsYXRlIiA8dHlwZSAxNDcgc3RydWN0IHsgLmh0bWwvdGVtcGxhdGUuZXNjYXBlRXJyIDx0eXBlIC0xOT47IC5odG1sL3RlbXBsYXRlLnRleHQgPHR5cGUgMTQ4ICo8dHlwZSAxNDkgInRleHQvdGVtcGxhdGUuVGVtcGxhdGUiIDx0eXBlIDE1MCBzdHJ1Y3QgeyAudGV4dC90ZW1wbGF0ZS5uYW1lIDx0eXBlIC0xNj47ID8gPHR5cGUgMzU+OyA/IDx0eXBlIDE1MSAqPHR5cGUgMTUyICIudGV4dC90ZW1wbGF0ZS5jb21tb24iIDx0eXBlIDE1MyBzdHJ1Y3QgeyAudGV4dC90ZW1wbGF0ZS50bXBsIDx0eXBlIDE1NCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDE1NSAqPHR5cGUgMTQ5Pj4+OyAudGV4dC90ZW1wbGF0ZS5wYXJzZUZ1bmNzIDx0eXBlIDE1NiAidGV4dC90ZW1wbGF0ZS5GdW5jTWFwIiA8dHlwZSAxNTcgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxNTggaW50ZXJmYWNlIHsgfT4+PjsgLnRleHQvdGVtcGxhdGUuZXhlY0Z1bmNzIDx0eXBlIDE1OSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDE2MCAicmVmbGVjdC5WYWx1ZSIgPHR5cGUgMTYxIHN0cnVjdCB7IC5yZWZsZWN0LnR5cCA8dHlwZSAxNjIgKjx0eXBlIDE2MyAiLnJlZmxlY3QucnR5cGUiIDx0eXBlIDE2NCBzdHJ1Y3QgeyAucmVmbGVjdC5raW5kIDx0eXBlIC01PjsgLnJlZmxlY3QuYWxpZ24gPHR5cGUgLTE+OyAucmVmbGVjdC5maWVsZEFsaWduIDx0eXBlIC01PjsgLnJlZmxlY3QuXyA8dHlwZSAtNT47IC5yZWZsZWN0LnNpemUgPHR5cGUgLTEzPjsgLnJlZmxlY3QuaGFzaCA8dHlwZSAtNz47IC5yZWZsZWN0Lmhhc2hmbiA8dHlwZSAtMTM+OyAucmVmbGVjdC5lcXVhbGZuIDx0eXBlIC0xMz47IC5yZWZsZWN0LmdjIDx0eXBlIDE2NSAidW5zYWZlLlBvaW50ZXIiICJ1bnNhZmUiIDx0eXBlIDE2NiAqYW55Pj47IC5yZWZsZWN0LnN0cmluZyA8dHlwZSAxNjcgKjx0eXBlIC0xNj4+OyA/IDx0eXBlIDE2OCAqPHR5cGUgMTY5ICIucmVmbGVjdC51bmNvbW1vblR5cGUiIDx0eXBlIDE3MCBzdHJ1Y3QgeyAucmVmbGVjdC5uYW1lIDx0eXBlIDE2Nz47IC5yZWZsZWN0LnBrZ1BhdGggPHR5cGUgMTY3PjsgLnJlZmxlY3QubWV0aG9kcyA8dHlwZSAxNzEgW10gPHR5cGUgMTcyICIucmVmbGVjdC5tZXRob2QiIDx0eXBlIDE3MyBzdHJ1Y3QgeyAucmVmbGVjdC5uYW1lIDx0eXBlIDE2Nz47IC5yZWZsZWN0LnBrZ1BhdGggPHR5cGUgMTY3PjsgLnJlZmxlY3QubXR5cCA8dHlwZSAxNzQgKjx0eXBlIDE2Mz4+OyAucmVmbGVjdC50eXAgPHR5cGUgMTc0PjsgLnJlZmxlY3QudGZuIDx0eXBlIDE2NT47IH0+Pj47IH0+CiBmdW5jICh0IDx0eXBlIDE3NSAqPHR5cGUgMTY5Pj4pIFBrZ1BhdGggKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTc1PikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIChtIDx0eXBlIDE3NiAicmVmbGVjdC5NZXRob2QiIDx0eXBlIDE3NyBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj47IFBrZ1BhdGggPHR5cGUgLTE2PjsgVHlwZSA8dHlwZSAxNzggInJlZmxlY3QuVHlwZSIgPHR5cGUgMTc5IGludGVyZmFjZSB7IEFsaWduICgpIDx0eXBlIC0xMT47IEZpZWxkQWxpZ24gKCkgPHR5cGUgLTExPjsgTWV0aG9kICg/IDx0eXBlIC0xMT4pIDx0eXBlIDE3Nj47IE1ldGhvZEJ5TmFtZSAoPyA8dHlwZSAtMTY+KSAoPyA8dHlwZSAxNzY+LCA/IDx0eXBlIC0xNT4pOyBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsgTmFtZSAoKSA8dHlwZSAtMTY+OyBQa2dQYXRoICgpIDx0eXBlIC0xNj47IFNpemUgKCkgPHR5cGUgLTEzPjsgU3RyaW5nICgpIDx0eXBlIC0xNj47IC5yZWZsZWN0LnJhd1N0cmluZyAoKSA8dHlwZSAtMTY+OyBLaW5kICgpIDx0eXBlIDE4MCAicmVmbGVjdC5LaW5kIiA8dHlwZSAtMTI+CiBmdW5jIChrIDx0eXBlIDE4MD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBJbXBsZW1lbnRzICh1IDx0eXBlIDE3OD4pIDx0eXBlIC0xNT47IEFzc2lnbmFibGVUbyAodSA8dHlwZSAxNzg+KSA8dHlwZSAtMTU+OyBDb252ZXJ0aWJsZVRvICh1IDx0eXBlIDE3OD4pIDx0eXBlIC0xNT47IENvbXBhcmFibGUgKCkgPHR5cGUgLTE1PjsgQml0cyAoKSA8dHlwZSAtMTE+OyBDaGFuRGlyICgpIDx0eXBlIDE4MSAicmVmbGVjdC5DaGFuRGlyIiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDE4MT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBJc1ZhcmlhZGljICgpIDx0eXBlIC0xNT47IEVsZW0gKCkgPHR5cGUgMTc4PjsgRmllbGQgKGkgPHR5cGUgLTExPikgPHR5cGUgMTgyICJyZWZsZWN0LlN0cnVjdEZpZWxkIiA8dHlwZSAxODMgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgMTc4PjsgVGFnIDx0eXBlIDE4NCAicmVmbGVjdC5TdHJ1Y3RUYWciIDx0eXBlIC0xNj4KIGZ1bmMgKHRhZyA8dHlwZSAxODQ+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+Owo+OyBPZmZzZXQgPHR5cGUgLTEzPjsgSW5kZXggPHR5cGUgMTg1IFtdIDx0eXBlIC0xMT4+OyBBbm9ueW1vdXMgPHR5cGUgLTE1PjsgfT4+OyBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDE4NiBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMTgyPjsgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKD8gPHR5cGUgMTgyPiwgPyA8dHlwZSAtMTU+KTsgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSAxODcgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pICg/IDx0eXBlIDE4Mj4sID8gPHR5cGUgLTE1Pik7IEluIChpIDx0eXBlIC0xMT4pIDx0eXBlIDE3OD47IEtleSAoKSA8dHlwZSAxNzg+OyBMZW4gKCkgPHR5cGUgLTExPjsgTnVtRmllbGQgKCkgPHR5cGUgLTExPjsgTnVtSW4gKCkgPHR5cGUgLTExPjsgTnVtT3V0ICgpIDx0eXBlIC0xMT47IE91dCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxNzg+OyAucmVmbGVjdC5jb21tb24gKCkgPHR5cGUgMTc0PjsgLnJlZmxlY3QudW5jb21tb24gKCkgPHR5cGUgMTc1PjsgfT4+OyBGdW5jIDx0eXBlIDE2MD47IEluZGV4IDx0eXBlIC0xMT47IH0+Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDE3NT4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNzU+KSBOYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDE3NT4pIE1ldGhvZCAoaSA8dHlwZSAtMTE+KSAobSA8dHlwZSAxNzY+KTsKIGZ1bmMgKHQgPHR5cGUgMTc1PikgLnJlZmxlY3QudW5jb21tb24gKCkgPHR5cGUgMTc1PjsKPj47IC5yZWZsZWN0LnB0clRvVGhpcyA8dHlwZSAxNzQ+OyAucmVmbGVjdC56ZXJvIDx0eXBlIDE2NT47IH0+CiBmdW5jICh0IDx0eXBlIDE3ND4pIEZpZWxkQWxpZ24gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDE3ND47CiBmdW5jICh0IDx0eXBlIDE3ND4pIE1ldGhvZCAoaSA8dHlwZSAtMTE+KSAobSA8dHlwZSAxNzY+KTsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgLnJlZmxlY3QucHRyVG8gKCkgPHR5cGUgMTc0PjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIChtIDx0eXBlIDE3Nj4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSAxNzQ+KSAucmVmbGVjdC5yYXdTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgS2V5ICgpIDx0eXBlIDE3OD47CiBmdW5jICh0IDx0eXBlIDE3ND4pIEluIChpIDx0eXBlIC0xMT4pIDx0eXBlIDE3OD47CiBmdW5jICh0IDx0eXBlIDE3ND4pIElzVmFyaWFkaWMgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBDaGFuRGlyICgpIDx0eXBlIDE4MT47CiBmdW5jICh0IDx0eXBlIDE3ND4pIEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgMTg4IFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAxODI+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBLaW5kICgpIDx0eXBlIDE4MD47CiBmdW5jICh0IDx0eXBlIDE3ND4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBPdXQgKGkgPHR5cGUgLTExPikgPHR5cGUgMTc4PjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgSW1wbGVtZW50cyAodSA8dHlwZSAxNzg+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBQa2dQYXRoICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDE3ND4pIENvbnZlcnRpYmxlVG8gKHUgPHR5cGUgMTc4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgRmllbGQgKGkgPHR5cGUgLTExPikgPHR5cGUgMTgyPjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgQWxpZ24gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgRWxlbSAoKSA8dHlwZSAxNzg+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSAxODI+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSAxNzQ+KSAucmVmbGVjdC5wb2ludGVycyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDE4OSAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgMTgyPiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgQml0cyAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBOdW1JbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBOdW1PdXQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgU2l6ZSAoKSA8dHlwZSAtMTM+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgTnVtRmllbGQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgQ29tcGFyYWJsZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxNzQ+KSBBc3NpZ25hYmxlVG8gKHUgPHR5cGUgMTc4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTc0PikgTGVuICgpIDx0eXBlIC0xMT47Cj4+OyAucmVmbGVjdC5wdHIgPHR5cGUgMTY1PjsgPyA8dHlwZSAxOTAgIi5yZWZsZWN0LmZsYWciIDx0eXBlIC0xMz4KIGZ1bmMgKGYgPHR5cGUgMTkwPikgLnJlZmxlY3QubXVzdEJlIChleHBlY3RlZCA8dHlwZSAxODA+KTsKIGZ1bmMgKGYgPHR5cGUgMTkwPikgLnJlZmxlY3QubXVzdEJlRXhwb3J0ZWQgKCk7CiBmdW5jIChmIDx0eXBlIDE5MD4pIC5yZWZsZWN0Lm11c3RCZUFzc2lnbmFibGUgKCk7CiBmdW5jIChmIDx0eXBlIDE5MD4pIC5yZWZsZWN0LmtpbmQgKCkgPHR5cGUgMTgwPjsKPjsgfT4KIGZ1bmMgKHYgPHR5cGUgMTYwPikgVHlwZSAoKSA8dHlwZSAxNzg+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBPdmVyZmxvd0NvbXBsZXggKHggPHR5cGUgLTE4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDE2MD47CiBmdW5jICh2IDx0eXBlIDE2MD4pIEJ5dGVzICgpIDx0eXBlIDE5MSBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgSW50ZXJmYWNlICgpIChpIDx0eXBlIDE5MiBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDE2MD47CiBmdW5jICh2IDx0eXBlIDE2MD4pIFNlbmQgKHggPHR5cGUgMTYwPik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIC5yZWZsZWN0LnJlY3YgKG5iIDx0eXBlIC0xNT4pICh2YWwgPHR5cGUgMTYwPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIFVpbnQgKCkgPHR5cGUgLTg+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBJc1ZhbGlkICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE2MD4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBPdmVyZmxvd0Zsb2F0ICh4IDx0eXBlIC0xMD4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE2MD4pIE1hcEtleXMgKCkgPHR5cGUgMTkzIFtdIDx0eXBlIDE2MD4+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgPHR5cGUgMTYwPjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgU2V0SW50ICh4IDx0eXBlIC00Pik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDE2MD47CiBmdW5jICh2IDx0eXBlIDE2MD4pIFNldExlbiAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgVW5zYWZlQWRkciAoKSA8dHlwZSAtMTM+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBTbGljZTMgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+LCBrIDx0eXBlIC0xMT4pIDx0eXBlIDE2MD47CiBmdW5jICh2IDx0eXBlIDE2MD4pIENvbXBsZXggKCkgPHR5cGUgLTE4PjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgU2V0Q2FwIChuIDx0eXBlIC0xMT4pOwogZnVuYyAodiA8dHlwZSAxNjA+KSBDYWxsU2xpY2UgKGluIDx0eXBlIDE5NCBbXSA8dHlwZSAxNjA+PikgPHR5cGUgMTk1IFtdIDx0eXBlIDE2MD4+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBGbG9hdCAoKSA8dHlwZSAtMTA+OwogZnVuYyAodiA8dHlwZSAxNjA+KSAucmVmbGVjdC5hc3NpZ25UbyAoY29udGV4dCA8dHlwZSAtMTY+LCBkc3QgPHR5cGUgMTYyPiwgdGFyZ2V0IDx0eXBlIDE2NT4pIDx0eXBlIDE2MD47CiBmdW5jICh2IDx0eXBlIDE2MD4pIC5yZWZsZWN0LnJ1bmVzICgpIDx0eXBlIDE5NiBbXSA8dHlwZSAtMjE+PjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgRWxlbSAoKSA8dHlwZSAxNjA+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBJbmRleCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxNjA+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBUcnlTZW5kICh4IDx0eXBlIDE2MD4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE2MD4pIFNldEJvb2wgKHggPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIFNldEJ5dGVzICh4IDx0eXBlIDE5NyBbXSA8dHlwZSAtMjA+Pik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIC5yZWZsZWN0LnNldFJ1bmVzICh4IDx0eXBlIDE5OCBbXSA8dHlwZSAtMjE+Pik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIEZpZWxkQnlOYW1lRnVuYyAobWF0Y2ggPHR5cGUgMTk5ICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSA8dHlwZSAxNjA+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBPdmVyZmxvd1VpbnQgKHggPHR5cGUgLTg+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBNYXBJbmRleCAoa2V5IDx0eXBlIDE2MD4pIDx0eXBlIDE2MD47CiBmdW5jICh2IDx0eXBlIDE2MD4pIElzTmlsICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE2MD4pIFNldFBvaW50ZXIgKHggPHR5cGUgMTY1Pik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSAxNjA+KSAucmVmbGVjdC5jYWxsIChvcCA8dHlwZSAtMTY+LCBpbiA8dHlwZSAyMDAgW10gPHR5cGUgMTYwPj4pIDx0eXBlIDIwMSBbXSA8dHlwZSAxNjA+PjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgSW50ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgUmVjdiAoKSAoeCA8dHlwZSAxNjA+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgQ29udmVydCAodCA8dHlwZSAxNzg+KSA8dHlwZSAxNjA+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBLaW5kICgpIDx0eXBlIDE4MD47CiBmdW5jICh2IDx0eXBlIDE2MD4pIEludGVyZmFjZURhdGEgKCkgPHR5cGUgMjAyIFsyIF0gPHR5cGUgLTEzPj47CiBmdW5jICh2IDx0eXBlIDE2MD4pIFNldE1hcEluZGV4IChrZXkgPHR5cGUgMTYwPiwgdmFsIDx0eXBlIDE2MD4pOwogZnVuYyAodiA8dHlwZSAxNjA+KSBDYWxsIChpbiA8dHlwZSAyMDMgW10gPHR5cGUgMTYwPj4pIDx0eXBlIDIwNCBbXSA8dHlwZSAxNjA+PjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgU2V0ICh4IDx0eXBlIDE2MD4pOwogZnVuYyAodiA8dHlwZSAxNjA+KSBTZXRVaW50ICh4IDx0eXBlIC04Pik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIEJvb2wgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgU2xpY2UgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KSA8dHlwZSAxNjA+OwogZnVuYyAodiA8dHlwZSAxNjA+KSAucmVmbGVjdC5wb2ludGVyICgpIDx0eXBlIDE2NT47CiBmdW5jICh2IDx0eXBlIDE2MD4pIFBvaW50ZXIgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgQ2FwICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDE2MD4pIFNldFN0cmluZyAoeCA8dHlwZSAtMTY+KTsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgTGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDE2MD4pIFRyeVJlY3YgKCkgKHggPHR5cGUgMTYwPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIENsb3NlICgpOwogZnVuYyAodiA8dHlwZSAxNjA+KSBDYW5BZGRyICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE2MD4pIENhblNldCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxNjA+KSAucmVmbGVjdC5zZW5kICh4IDx0eXBlIDE2MD4sIG5iIDx0eXBlIC0xNT4pIChzZWxlY3RlZCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSAyMDUgW10gPHR5cGUgLTExPj4pIDx0eXBlIDE2MD47CiBmdW5jICh2IDx0eXBlIDE2MD4pIE92ZXJmbG93SW50ICh4IDx0eXBlIC00PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgTnVtRmllbGQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgMTYwPikgU2V0RmxvYXQgKHggPHR5cGUgLTEwPik7CiBmdW5jICh2IDx0eXBlIDE2MD4pIENhbkludGVyZmFjZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxNjA+KSBTZXRDb21wbGV4ICh4IDx0eXBlIC0xOD4pOwogZnVuYyAodiA8dHlwZSAxNjA+KSBBZGRyICgpIDx0eXBlIDE2MD47Cj4+OyB9Pj4+OyAudGV4dC90ZW1wbGF0ZS5sZWZ0RGVsaW0gPHR5cGUgLTE2PjsgLnRleHQvdGVtcGxhdGUucmlnaHREZWxpbSA8dHlwZSAtMTY+OyB9PgogZnVuYyAodCA8dHlwZSAyMDYgKjx0eXBlIDE0OT4+KSBBZGRQYXJzZVRyZWUgKG5hbWUgPHR5cGUgLTE2PiwgdHJlZSA8dHlwZSAzNT4pICg/IDx0eXBlIDIwNj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDIwNj4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMjA2PikgTG9va3VwIChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDIwNj47CiBmdW5jICh0IDx0eXBlIDIwNj4pIC50ZXh0L3RlbXBsYXRlLmFzc29jaWF0ZSAobmV3IDx0eXBlIDIwNj4sIHRyZWUgPHR5cGUgMzU+KSAoPyA8dHlwZSAtMTU+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAyMDY+KSBQYXJzZSAodGV4dCA8dHlwZSAtMTY+KSAoPyA8dHlwZSAyMDY+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAyMDY+KSBFeGVjdXRlICh3ciA8dHlwZSAxMzY+LCBkYXRhIDx0eXBlIDIwNyBpbnRlcmZhY2UgeyB9PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMjA2PikgVGVtcGxhdGVzICgpIDx0eXBlIDIwOCBbXSA8dHlwZSAyMDY+PjsKIGZ1bmMgKHQgPHR5cGUgMjA2PikgRXhlY3V0ZVRlbXBsYXRlICh3ciA8dHlwZSAxMzY+LCBuYW1lIDx0eXBlIC0xNj4sIGRhdGEgPHR5cGUgMjA5IGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAyMDY+KSBQYXJzZUZpbGVzIChmaWxlbmFtZXMgLi4uPHR5cGUgLTE2PikgKD8gPHR5cGUgMjA2PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMjA2PikgTmV3IChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDIwNj47CiBmdW5jICh0IDx0eXBlIDIwNj4pIENsb25lICgpICg/IDx0eXBlIDIwNj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDIwNj4pIC50ZXh0L3RlbXBsYXRlLmNvcHkgKGMgPHR5cGUgMTUxPikgPHR5cGUgMjA2PjsKIGZ1bmMgKHQgPHR5cGUgMjA2PikgRGVsaW1zIChsZWZ0IDx0eXBlIC0xNj4sIHJpZ2h0IDx0eXBlIC0xNj4pIDx0eXBlIDIwNj47CiBmdW5jICh0IDx0eXBlIDIwNj4pIFBhcnNlR2xvYiAocGF0dGVybiA8dHlwZSAtMTY+KSAoPyA8dHlwZSAyMDY+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAyMDY+KSAudGV4dC90ZW1wbGF0ZS5pbml0ICgpOwogZnVuYyAodCA8dHlwZSAyMDY+KSBGdW5jcyAoZnVuY01hcCA8dHlwZSAxNTY+KSA8dHlwZSAyMDY+Owo+PjsgVHJlZSA8dHlwZSAzNT47ID8gPHR5cGUgMjEwICo8dHlwZSAyMTEgIi5odG1sL3RlbXBsYXRlLm5hbWVTcGFjZSIgPHR5cGUgMjEyIHN0cnVjdCB7IC5odG1sL3RlbXBsYXRlLm11IDx0eXBlIDIxMyAic3luYy5NdXRleCIgPHR5cGUgMjE0IHN0cnVjdCB7IC5zeW5jLnN0YXRlIDx0eXBlIC0zPjsgLnN5bmMuc2VtYSA8dHlwZSAtNz47IH0+CiBmdW5jIChtIDx0eXBlIDIxNSAqPHR5cGUgMjEzPj4pIFVubG9jayAoKTsKIGZ1bmMgKG0gPHR5cGUgMjE1PikgTG9jayAoKTsKPjsgLmh0bWwvdGVtcGxhdGUuc2V0IDx0eXBlIDIxNiBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDIxNyAqPHR5cGUgMTQ2Pj4+OyB9Pj4+OyB9PgogZnVuYyAodCA8dHlwZSAyMTc+KSBUZW1wbGF0ZXMgKCkgPHR5cGUgMjE4IFtdIDx0eXBlIDIxNz4+OwogZnVuYyAodCA8dHlwZSAyMTc+KSAuaHRtbC90ZW1wbGF0ZS5lc2NhcGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgMjE3PikgRXhlY3V0ZSAod3IgPHR5cGUgMTM2PiwgZGF0YSA8dHlwZSAyMTkgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT47CiBmdW5jICh0IDx0eXBlIDIxNz4pIEV4ZWN1dGVUZW1wbGF0ZSAod3IgPHR5cGUgMTM2PiwgbmFtZSA8dHlwZSAtMTY+LCBkYXRhIDx0eXBlIDIyMCBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgMjE3PikgLmh0bWwvdGVtcGxhdGUubG9va3VwQW5kRXNjYXBlVGVtcGxhdGUgKG5hbWUgPHR5cGUgLTE2PikgKHRtcGwgPHR5cGUgMjE3PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAyMTc+KSBQYXJzZSAoc3JjIDx0eXBlIC0xNj4pICg/IDx0eXBlIDIxNz4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDIxNz4pIEFkZFBhcnNlVHJlZSAobmFtZSA8dHlwZSAtMTY+LCB0cmVlIDx0eXBlIDM1PikgKD8gPHR5cGUgMjE3PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMjE3PikgQ2xvbmUgKCkgKD8gPHR5cGUgMjE3PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMjE3PikgTmV3IChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDIxNz47CiBmdW5jICh0IDx0eXBlIDIxNz4pIC5odG1sL3RlbXBsYXRlLm5ldyAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAyMTc+OwogZnVuYyAodCA8dHlwZSAyMTc+KSBOYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDIxNz4pIEZ1bmNzIChmdW5jTWFwIDx0eXBlIDEzMT4pIDx0eXBlIDIxNz47CiBmdW5jICh0IDx0eXBlIDIxNz4pIERlbGltcyAobGVmdCA8dHlwZSAtMTY+LCByaWdodCA8dHlwZSAtMTY+KSA8dHlwZSAyMTc+OwogZnVuYyAodCA8dHlwZSAyMTc+KSBMb29rdXAgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMjE3PjsKIGZ1bmMgKHQgPHR5cGUgMjE3PikgUGFyc2VGaWxlcyAoZmlsZW5hbWVzIC4uLjx0eXBlIC0xNj4pICg/IDx0eXBlIDIxNz4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDIxNz4pIFBhcnNlR2xvYiAocGF0dGVybiA8dHlwZSAtMTY+KSAoPyA8dHlwZSAyMTc+LCA/IDx0eXBlIC0xOT4pOwo+PiwgZXJyIDx0eXBlIC0xOT4pIDx0eXBlIDE0NT47CmZ1bmMgTmV3IChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDE0NT47CmNvbnN0IE9LIDx0eXBlIDI+ID0gMCA7CmZ1bmMgUGFyc2VGaWxlcyAoZmlsZW5hbWVzIC4uLjx0eXBlIC0xNj4pICg/IDx0eXBlIDE0NT4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgUGFyc2VHbG9iIChwYXR0ZXJuIDx0eXBlIC0xNj4pICg/IDx0eXBlIDE0NT4sID8gPHR5cGUgLTE5Pik7CnR5cGUgPHR5cGUgMTQ2PjsKdHlwZSA8dHlwZSAyMjEgIlVSTCIgPHR5cGUgLTE2Pj47CmZ1bmMgVVJMUXVlcnlFc2NhcGVyIChhcmdzIC4uLjx0eXBlIDIyMiBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE2PjsKY2hlY2tzdW0gRjZFQjIxRDVFRDUwMjRDMDQwNEE2OTA3OUE3QjgzRTRBRTNGRTgxNzsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAAAAAA0AAAAcW8AAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAApW8AACYAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAMxvAAAgAAAABAAAAAIAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAADsbwAAAQAAAAAAAAAAAAAAAQAAAAAAAAA=