f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAgMgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGV4ZWM7CnBrZ3BhdGggb3MvZXhlYzsKcHJpb3JpdHkgNzsKaW1wb3J0IGJ5dGVzIGJ5dGVzICJieXRlcyI7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IG9zIG9zICJvcyI7CmltcG9ydCBmaWxlcGF0aCBwYXRoL2ZpbGVwYXRoICJwYXRoL2ZpbGVwYXRoIjsKaW1wb3J0IHJ1bnRpbWUgcnVudGltZSAicnVudGltZSI7CmltcG9ydCBzdHJjb252IHN0cmNvbnYgInN0cmNvbnYiOwppbXBvcnQgc3RyaW5ncyBzdHJpbmdzICJzdHJpbmdzIjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCBzeXNjYWxsIHN5c2NhbGwgInN5c2NhbGwiOwppbml0IGV4ZWMgb3NfZXhlYy4uaW1wb3J0IDcgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IG9zIG9zLi5pbXBvcnQgNSBmaWxlcGF0aCBwYXRoX2ZpbGVwYXRoLi5pbXBvcnQgNjsKdHlwZSA8dHlwZSAxICJDbWQiIDx0eXBlIDIgc3RydWN0IHsgUGF0aCA8dHlwZSAtMTY+OyBBcmdzIDx0eXBlIDMgW10gPHR5cGUgLTE2Pj47IEVudiA8dHlwZSA0IFtdIDx0eXBlIC0xNj4+OyBEaXIgPHR5cGUgLTE2PjsgU3RkaW4gPHR5cGUgNSAiaW8uUmVhZGVyIiA8dHlwZSA2IGludGVyZmFjZSB7IFJlYWQgKHAgPHR5cGUgNyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IFN0ZG91dCA8dHlwZSA4ICJpby5Xcml0ZXIiIDx0eXBlIDkgaW50ZXJmYWNlIHsgV3JpdGUgKHAgPHR5cGUgMTAgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyBTdGRlcnIgPHR5cGUgOD47IEV4dHJhRmlsZXMgPHR5cGUgMTEgW10gPHR5cGUgMTIgKjx0eXBlIDEzICJvcy5GaWxlIiA8dHlwZSAxNCBzdHJ1Y3QgeyA/IDx0eXBlIDE1ICo8dHlwZSAxNiAiLm9zLmZpbGUiIDx0eXBlIDE3IHN0cnVjdCB7IC5vcy5mZCA8dHlwZSAtMTE+OyAub3MubmFtZSA8dHlwZSAtMTY+OyAub3MuZGlyaW5mbyA8dHlwZSAxOCAqPHR5cGUgMTkgIi5vcy5kaXJJbmZvIiA8dHlwZSAyMCBzdHJ1Y3QgeyAub3MuYnVmIDx0eXBlIDIxIFtdIDx0eXBlIC0yMD4+OyAub3MuZGlyIDx0eXBlIDIyICo8dHlwZSAyMyAic3lzY2FsbC5ESVIiIDx0eXBlIDI0ICIuc3lzY2FsbC5fRElSIiA8dHlwZSAyNSBzdHJ1Y3QgeyB9Pj4+PjsgfT4+PjsgLm9zLm5lcGlwZSA8dHlwZSAtMz47IH0+CiBmdW5jIChmaWxlIDx0eXBlIDI2ICo8dHlwZSAxNj4+KSAub3MuY2xvc2UgKCkgPHR5cGUgLTE5PjsKPj47IH0+CiBmdW5jIChmIDx0eXBlIDI3ICo8dHlwZSAxMz4+KSBXcml0ZUF0IChiIDx0eXBlIDI4IFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDI3PikgUmVhZGRpcm5hbWVzIChuIDx0eXBlIC0xMT4pIChuYW1lcyA8dHlwZSAyOSBbXSA8dHlwZSAtMTY+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAyNz4pIFJlYWQgKGIgPHR5cGUgMzAgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMjc+KSBOYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jIChmIDx0eXBlIDI3PikgQ2hvd24gKHVpZCA8dHlwZSAtMTE+LCBnaWQgPHR5cGUgLTExPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGYgPHR5cGUgMjc+KSBSZWFkZGlyIChuIDx0eXBlIC0xMT4pIChmaSA8dHlwZSAzMSBbXSA8dHlwZSAzMiAib3MuRmlsZUluZm8iIDx0eXBlIDMzIGludGVyZmFjZSB7IE5hbWUgKCkgPHR5cGUgLTE2PjsgU2l6ZSAoKSA8dHlwZSAtND47IE1vZGUgKCkgPHR5cGUgMzQgIm9zLkZpbGVNb2RlIiA8dHlwZSAtNz4KIGZ1bmMgKG0gPHR5cGUgMzQ+KSBQZXJtICgpIDx0eXBlIDM0PjsKIGZ1bmMgKG0gPHR5cGUgMzQ+KSBJc1JlZ3VsYXIgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKG0gPHR5cGUgMzQ+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKG0gPHR5cGUgMzQ+KSBJc0RpciAoKSA8dHlwZSAtMTU+Owo+OyBNb2RUaW1lICgpIDx0eXBlIDM1ICJ0aW1lLlRpbWUiICJ0aW1lIiA8dHlwZSAzNiBzdHJ1Y3QgeyAudGltZS5zZWMgPHR5cGUgLTQ+OyAudGltZS5uc2VjIDx0eXBlIC0zPjsgLnRpbWUubG9jIDx0eXBlIDM3ICo8dHlwZSAzOCAidGltZS5Mb2NhdGlvbiIgPHR5cGUgMzkgc3RydWN0IHsgLnRpbWUubmFtZSA8dHlwZSAtMTY+OyAudGltZS56b25lIDx0eXBlIDQwIFtdIDx0eXBlIDQxICIudGltZS56b25lIiA8dHlwZSA0MiBzdHJ1Y3QgeyAudGltZS5uYW1lIDx0eXBlIC0xNj47IC50aW1lLm9mZnNldCA8dHlwZSAtMTE+OyAudGltZS5pc0RTVCA8dHlwZSAtMTU+OyB9Pj4+OyAudGltZS50eCA8dHlwZSA0MyBbXSA8dHlwZSA0NCAiLnRpbWUuem9uZVRyYW5zIiA8dHlwZSA0NSBzdHJ1Y3QgeyAudGltZS53aGVuIDx0eXBlIC00PjsgLnRpbWUuaW5kZXggPHR5cGUgLTU+OyAudGltZS5pc3N0ZCA8dHlwZSAtMTU+OyAudGltZS5pc3V0YyA8dHlwZSAtMTU+OyB9Pj4+OyAudGltZS5jYWNoZVN0YXJ0IDx0eXBlIC00PjsgLnRpbWUuY2FjaGVFbmQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZVpvbmUgPHR5cGUgNDYgKjx0eXBlIDQxPj47IH0+CiBmdW5jIChsIDx0eXBlIDQ3ICo8dHlwZSAzOD4+KSAudGltZS5maXJzdFpvbmVVc2VkICgpIDx0eXBlIC0xNT47CiBmdW5jIChsIDx0eXBlIDQ3PikgLnRpbWUubG9va3VwIChzZWMgPHR5cGUgLTQ+KSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgc3RhcnQgPHR5cGUgLTQ+LCBlbmQgPHR5cGUgLTQ+KTsKIGZ1bmMgKGwgPHR5cGUgNDc+KSAudGltZS5sb29rdXBOYW1lIChuYW1lIDx0eXBlIC0xNj4sIHVuaXggPHR5cGUgLTQ+KSAob2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAobCA8dHlwZSA0Nz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobCA8dHlwZSA0Nz4pIC50aW1lLmdldCAoKSA8dHlwZSA0Nz47CiBmdW5jIChsIDx0eXBlIDQ3PikgLnRpbWUubG9va3VwRmlyc3Rab25lICgpIDx0eXBlIC0xMT47Cj4+OyB9PgogZnVuYyAodCA8dHlwZSAzNT4pIEFmdGVyICh1IDx0eXBlIDM1PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBNYXJzaGFsVGV4dCAoKSAoPyA8dHlwZSA0OCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBEYXRlICgpICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDQ5ICJ0aW1lLk1vbnRoIiA8dHlwZSAtMTE+CiBmdW5jIChtIDx0eXBlIDQ5PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4sIGRheSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSAudGltZS5hYnMgKCkgPHR5cGUgLTg+OwogZnVuYyAodCA8dHlwZSAzNT4pIFdlZWtkYXkgKCkgPHR5cGUgNTAgInRpbWUuV2Vla2RheSIgPHR5cGUgLTExPgogZnVuYyAoZCA8dHlwZSA1MD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OwogZnVuYyAodCA8dHlwZSAzNT4pIE5hbm9zZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgNTEgKjx0eXBlIDM1Pj4pIEdvYkRlY29kZSAoZGF0YSA8dHlwZSA1MiBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBJbiAobG9jIDx0eXBlIDM3PikgPHR5cGUgMzU+OwogZnVuYyAodCA8dHlwZSAzNT4pIExvY2FsICgpIDx0eXBlIDM1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBNb250aCAoKSA8dHlwZSA0OT47CiBmdW5jICh0IDx0eXBlIDM1PikgSG91ciAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzNT4pIE1hcnNoYWxCaW5hcnkgKCkgKD8gPHR5cGUgNTMgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDM1PikgVW5peE5hbm8gKCkgPHR5cGUgLTQ+OwogZnVuYyAodCA8dHlwZSAzNT4pIEVxdWFsICh1IDx0eXBlIDM1PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBGb3JtYXQgKGxheW91dCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAzNT4pIEFkZERhdGUgKHllYXJzIDx0eXBlIC0xMT4sIG1vbnRocyA8dHlwZSAtMTE+LCBkYXlzIDx0eXBlIC0xMT4pIDx0eXBlIDM1PjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBab25lICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBEYXkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBDbG9jayAoKSAoaG91ciA8dHlwZSAtMTE+LCBtaW4gPHR5cGUgLTExPiwgc2VjIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDU0IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIFVUQyAoKSA8dHlwZSAzNT47CiBmdW5jICh0IDx0eXBlIDM1PikgLnRpbWUuZGF0ZSAoZnVsbCA8dHlwZSAtMTU+KSAoeWVhciA8dHlwZSAtMTE+LCBtb250aCA8dHlwZSA0OT4sIGRheSA8dHlwZSAtMTE+LCB5ZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIElzWmVybyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAzNT4pIEJlZm9yZSAodSA8dHlwZSAzNT4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDM1PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDM1PikgU2Vjb25kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDM1PikgTWludXRlICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDM1PikgU3ViICh1IDx0eXBlIDM1PikgPHR5cGUgNTUgInRpbWUuRHVyYXRpb24iIDx0eXBlIC00PgogZnVuYyAoZCA8dHlwZSA1NT4pIFNlY29uZHMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgNTU+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGQgPHR5cGUgNTU+KSBNaW51dGVzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDU1PikgSG91cnMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgNTU+KSBOYW5vc2Vjb25kcyAoKSA8dHlwZSAtND47Cj47CiBmdW5jICh0IDx0eXBlIDM1PikgUm91bmQgKGQgPHR5cGUgNTU+KSA8dHlwZSAzNT47CiBmdW5jICh0IDx0eXBlIDM1PikgVW5peCAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDUxPikgVW5tYXJzaGFsVGV4dCAoZGF0YSA8dHlwZSA1NiBbXSA8dHlwZSAtMjA+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMzU+KSBBZGQgKGQgPHR5cGUgNTU+KSA8dHlwZSAzNT47CiBmdW5jICh0IDx0eXBlIDM1PikgVHJ1bmNhdGUgKGQgPHR5cGUgNTU+KSA8dHlwZSAzNT47CiBmdW5jICh0IDx0eXBlIDM1PikgTG9jYXRpb24gKCkgPHR5cGUgMzc+OwogZnVuYyAodCA8dHlwZSAzNT4pIEdvYkVuY29kZSAoKSAoPyA8dHlwZSA1NyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgNTE+KSBVbm1hcnNoYWxCaW5hcnkgKGRhdGEgPHR5cGUgNTggW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh0IDx0eXBlIDM1PikgSVNPV2VlayAoKSAoeWVhciA8dHlwZSAtMTE+LCB3ZWVrIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAzNT4pIC50aW1lLmxvY2FicyAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgYWJzIDx0eXBlIC04Pik7CiBmdW5jICh0IDx0eXBlIDM1PikgWWVhckRheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzNT4pIFllYXIgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgNTE+KSBVbm1hcnNoYWxKU09OIChkYXRhIDx0eXBlIDU5IFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwo+OyBJc0RpciAoKSA8dHlwZSAtMTU+OyBTeXMgKCkgPHR5cGUgNjAgaW50ZXJmYWNlIHsgfT47IH0+Pj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMjc+KSBDaGRpciAoKSA8dHlwZSAtMTk+OwogZnVuYyAoZiA8dHlwZSAyNz4pIC5vcy5yZWFkIChiIDx0eXBlIDYxIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDI3PikgU2VlayAob2Zmc2V0IDx0eXBlIC00Piwgd2hlbmNlIDx0eXBlIC0xMT4pIChyZXQgPHR5cGUgLTQ+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDI3PikgLm9zLndyaXRlIChiIDx0eXBlIDYyIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDI3PikgU3RhdCAoKSAoZmkgPHR5cGUgMzI+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDI3PikgV3JpdGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgKHJldCA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDI3PikgLm9zLnByZWFkIChiIDx0eXBlIDYzIFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDI3PikgUmVhZEF0IChiIDx0eXBlIDY0IFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDI3PikgV3JpdGUgKGIgPHR5cGUgNjUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMjc+KSBTeW5jICgpIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDI3PikgRmQgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKGZpbGUgPHR5cGUgMjc+KSAub3MucmVhZGRpcm5hbWVzIChuIDx0eXBlIC0xMT4pIChuYW1lcyA8dHlwZSA2NiBbXSA8dHlwZSAtMTY+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAyNz4pIENobW9kIChtb2RlIDx0eXBlIDM0PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGYgPHR5cGUgMjc+KSBUcnVuY2F0ZSAoc2l6ZSA8dHlwZSAtND4pIDx0eXBlIC0xOT47CiBmdW5jIChmIDx0eXBlIDI3PikgLm9zLnNlZWsgKG9mZnNldCA8dHlwZSAtND4sIHdoZW5jZSA8dHlwZSAtMTE+KSAocmV0IDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAyNz4pIC5vcy5wd3JpdGUgKGIgPHR5cGUgNjcgW10gPHR5cGUgLTIwPj4sIG9mZiA8dHlwZSAtND4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMjc+KSAub3MucmVhZGRpciAobiA8dHlwZSAtMTE+KSAoZmkgPHR5cGUgNjggW10gPHR5cGUgMzI+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAyNz4pIENsb3NlICgpIDx0eXBlIC0xOT47Cj4+PjsgU3lzUHJvY0F0dHIgPHR5cGUgNjkgKjx0eXBlIDcwICJzeXNjYWxsLlN5c1Byb2NBdHRyIiA8dHlwZSA3MSBzdHJ1Y3QgeyBDaHJvb3QgPHR5cGUgLTE2PjsgQ3JlZGVudGlhbCA8dHlwZSA3MiAqPHR5cGUgNzMgInN5c2NhbGwuQ3JlZGVudGlhbCIgPHR5cGUgNzQgc3RydWN0IHsgVWlkIDx0eXBlIC03PjsgR2lkIDx0eXBlIC03PjsgR3JvdXBzIDx0eXBlIDc1IFtdIDx0eXBlIC03Pj47IH0+Pj47IFB0cmFjZSA8dHlwZSAtMTU+OyBTZXRzaWQgPHR5cGUgLTE1PjsgU2V0cGdpZCA8dHlwZSAtMTU+OyBTZXRjdHR5IDx0eXBlIC0xNT47IE5vY3R0eSA8dHlwZSAtMTU+OyBDdHR5IDx0eXBlIC0xMT47IFBkZWF0aHNpZyA8dHlwZSA3NiAic3lzY2FsbC5TaWduYWwiIDx0eXBlIC0xMT4KIGZ1bmMgKHMgPHR5cGUgNzY+KSBTaWduYWwgKCk7CiBmdW5jIChzIDx0eXBlIDc2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47IENsb25lZmxhZ3MgPHR5cGUgLTEzPjsgVWlkTWFwcGluZ3MgPHR5cGUgNzcgW10gPHR5cGUgNzggInN5c2NhbGwuU3lzUHJvY0lETWFwIiA8dHlwZSA3OSBzdHJ1Y3QgeyBDb250YWluZXJJRCA8dHlwZSAtMTE+OyBIb3N0SUQgPHR5cGUgLTExPjsgU2l6ZSA8dHlwZSAtMTE+OyB9Pj4+OyBHaWRNYXBwaW5ncyA8dHlwZSA4MCBbXSA8dHlwZSA3OD4+OyB9Pj4+OyBQcm9jZXNzIDx0eXBlIDgxICo8dHlwZSA4MiAib3MuUHJvY2VzcyIgPHR5cGUgODMgc3RydWN0IHsgUGlkIDx0eXBlIC0xMT47IC5vcy5oYW5kbGUgPHR5cGUgLTEzPjsgLm9zLmlzZG9uZSA8dHlwZSAtNz47IH0+CiBmdW5jIChwIDx0eXBlIDg0ICo8dHlwZSA4Mj4+KSAub3Muc2V0RG9uZSAoKTsKIGZ1bmMgKHAgPHR5cGUgODQ+KSBLaWxsICgpIDx0eXBlIC0xOT47CiBmdW5jIChwIDx0eXBlIDg0PikgLm9zLnJlbGVhc2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHAgPHR5cGUgODQ+KSAub3Mud2FpdCAoKSAocHMgPHR5cGUgODUgKjx0eXBlIDg2ICJvcy5Qcm9jZXNzU3RhdGUiIDx0eXBlIDg3IHN0cnVjdCB7IC5vcy5waWQgPHR5cGUgLTExPjsgLm9zLnN0YXR1cyA8dHlwZSA4OCAic3lzY2FsbC5XYWl0U3RhdHVzIiA8dHlwZSAtNz4KIGZ1bmMgKHcgPHR5cGUgODg+KSBTdG9wcGVkICgpIDx0eXBlIC0xNT47CiBmdW5jICh3IDx0eXBlIDg4PikgU3RvcFNpZ25hbCAoKSA8dHlwZSA3Nj47CiBmdW5jICh3IDx0eXBlIDg4PikgU2lnbmFsICgpIDx0eXBlIDc2PjsKIGZ1bmMgKHcgPHR5cGUgODg+KSBFeGl0U3RhdHVzICgpIDx0eXBlIC0xMT47CiBmdW5jICh3IDx0eXBlIDg4PikgRXhpdGVkICgpIDx0eXBlIC0xNT47CiBmdW5jICh3IDx0eXBlIDg4PikgVHJhcENhdXNlICgpIDx0eXBlIC0xMT47CiBmdW5jICh3IDx0eXBlIDg4PikgQ29yZUR1bXAgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHcgPHR5cGUgODg+KSBDb250aW51ZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHcgPHR5cGUgODg+KSBTaWduYWxlZCAoKSA8dHlwZSAtMTU+Owo+OyAub3MucnVzYWdlIDx0eXBlIDg5ICo8dHlwZSA5MCAic3lzY2FsbC5SdXNhZ2UiIDx0eXBlIDkxIHN0cnVjdCB7IFV0aW1lIDx0eXBlIDkyICJzeXNjYWxsLlRpbWV2YWwiIDx0eXBlIDkzIHN0cnVjdCB7IFNlYyA8dHlwZSA5NCAic3lzY2FsbC5UaW1ldmFsX3NlY190IiA8dHlwZSAtMz4+OyBVc2VjIDx0eXBlIDk1ICJzeXNjYWxsLlRpbWV2YWxfdXNlY190IiA8dHlwZSAtMz4+OyB9PgogZnVuYyAodHYgPHR5cGUgOTYgKjx0eXBlIDkyPj4pIFVuaXggKCkgKHNlYyA8dHlwZSAtND4sIG5zZWMgPHR5cGUgLTQ+KTsKIGZ1bmMgKHR2IDx0eXBlIDk2PikgTmFubyAoKSA8dHlwZSAtND47Cj47IFN0aW1lIDx0eXBlIDkyPjsgTWF4cnNzIDx0eXBlIC0zPjsgSXhyc3MgPHR5cGUgLTM+OyBJZHJzcyA8dHlwZSAtMz47IElzcnNzIDx0eXBlIC0zPjsgTWluZmx0IDx0eXBlIC0zPjsgTWFqZmx0IDx0eXBlIC0zPjsgTnN3YXAgPHR5cGUgLTM+OyBJbmJsb2NrIDx0eXBlIC0zPjsgT3VibG9jayA8dHlwZSAtMz47IE1zZ3NuZCA8dHlwZSAtMz47IE1zZ3JjdiA8dHlwZSAtMz47IE5zaWduYWxzIDx0eXBlIC0zPjsgTnZjc3cgPHR5cGUgLTM+OyBOaXZjc3cgPHR5cGUgLTM+OyB9Pj4+OyB9PgogZnVuYyAocCA8dHlwZSA5NyAqPHR5cGUgODY+PikgLm9zLnVzZXJUaW1lICgpIDx0eXBlIDU1PjsKIGZ1bmMgKHAgPHR5cGUgOTc+KSBVc2VyVGltZSAoKSA8dHlwZSA1NT47CiBmdW5jIChwIDx0eXBlIDk3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChwIDx0eXBlIDk3PikgU3lzVXNhZ2UgKCkgPHR5cGUgOTggaW50ZXJmYWNlIHsgfT47CiBmdW5jIChwIDx0eXBlIDk3PikgUGlkICgpIDx0eXBlIC0xMT47CiBmdW5jIChwIDx0eXBlIDk3PikgLm9zLnN5cyAoKSA8dHlwZSA5OSBpbnRlcmZhY2UgeyB9PjsKIGZ1bmMgKHAgPHR5cGUgOTc+KSBTdWNjZXNzICgpIDx0eXBlIC0xNT47CiBmdW5jIChwIDx0eXBlIDk3PikgLm9zLnN1Y2Nlc3MgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHAgPHR5cGUgOTc+KSAub3Muc3lzdGVtVGltZSAoKSA8dHlwZSA1NT47CiBmdW5jIChwIDx0eXBlIDk3PikgLm9zLmV4aXRlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAocCA8dHlwZSA5Nz4pIEV4aXRlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAocCA8dHlwZSA5Nz4pIFN5cyAoKSA8dHlwZSAxMDAgaW50ZXJmYWNlIHsgfT47CiBmdW5jIChwIDx0eXBlIDk3PikgLm9zLnN5c1VzYWdlICgpIDx0eXBlIDEwMSBpbnRlcmZhY2UgeyB9PjsKIGZ1bmMgKHAgPHR5cGUgOTc+KSBTeXN0ZW1UaW1lICgpIDx0eXBlIDU1PjsKPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHAgPHR5cGUgODQ+KSAub3MuZG9uZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAocCA8dHlwZSA4ND4pIC5vcy5zaWduYWwgKHNpZyA8dHlwZSAxMDIgIm9zLlNpZ25hbCIgPHR5cGUgMTAzIGludGVyZmFjZSB7IFN0cmluZyAoKSA8dHlwZSAtMTY+OyBTaWduYWwgKCk7IH0+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHAgPHR5cGUgODQ+KSBXYWl0ICgpICg/IDx0eXBlIDg1PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHAgPHR5cGUgODQ+KSBTaWduYWwgKHNpZyA8dHlwZSAxMDI+KSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSA4ND4pIFJlbGVhc2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHAgPHR5cGUgODQ+KSAub3Mua2lsbCAoKSA8dHlwZSAtMTk+Owo+PjsgUHJvY2Vzc1N0YXRlIDx0eXBlIDg1PjsgLm9zL2V4ZWMubG9va1BhdGhFcnIgPHR5cGUgLTE5PjsgLm9zL2V4ZWMuZmluaXNoZWQgPHR5cGUgLTE1PjsgLm9zL2V4ZWMuY2hpbGRGaWxlcyA8dHlwZSAxMDQgW10gPHR5cGUgMTI+PjsgLm9zL2V4ZWMuY2xvc2VBZnRlclN0YXJ0IDx0eXBlIDEwNSBbXSA8dHlwZSAxMDYgImlvLkNsb3NlciIgPHR5cGUgMTA3IGludGVyZmFjZSB7IENsb3NlICgpIDx0eXBlIC0xOT47IH0+Pj47IC5vcy9leGVjLmNsb3NlQWZ0ZXJXYWl0IDx0eXBlIDEwOCBbXSA8dHlwZSAxMDY+PjsgLm9zL2V4ZWMuZ29yb3V0aW5lIDx0eXBlIDEwOSBbXSA8dHlwZSAxMTAgKCkgPHR5cGUgLTE5Pj4+OyAub3MvZXhlYy5lcnJjaCA8dHlwZSAxMTEgY2hhbiA8dHlwZSAtMTk+PjsgfT4KIGZ1bmMgKGMgPHR5cGUgMTEyICo8dHlwZSAxPj4pIC5vcy9leGVjLmVudnYgKCkgPHR5cGUgMTEzIFtdIDx0eXBlIC0xNj4+OwogZnVuYyAoYyA8dHlwZSAxMTI+KSAub3MvZXhlYy5hcmd2ICgpIDx0eXBlIDExNCBbXSA8dHlwZSAtMTY+PjsKIGZ1bmMgKGMgPHR5cGUgMTEyPikgLm9zL2V4ZWMuc3RkaW4gKCkgKGYgPHR5cGUgMTI+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDExMj4pIC5vcy9leGVjLnN0ZG91dCAoKSAoZiA8dHlwZSAxMj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTEyPikgLm9zL2V4ZWMuc3RkZXJyICgpIChmIDx0eXBlIDEyPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxMTI+KSAub3MvZXhlYy53cml0ZXJEZXNjcmlwdG9yICh3IDx0eXBlIDg+KSAoZiA8dHlwZSAxMj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTEyPikgLm9zL2V4ZWMuY2xvc2VEZXNjcmlwdG9ycyAoY2xvc2VycyA8dHlwZSAxMTUgW10gPHR5cGUgMTA2Pj4pOwogZnVuYyAoYyA8dHlwZSAxMTI+KSBSdW4gKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTEyPikgU3RhcnQgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTEyPikgV2FpdCAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAxMTI+KSBPdXRwdXQgKCkgKD8gPHR5cGUgMTE2IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxMTI+KSBDb21iaW5lZE91dHB1dCAoKSAoPyA8dHlwZSAxMTcgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDExMj4pIFN0ZGluUGlwZSAoKSAoPyA8dHlwZSAxMTggImlvLldyaXRlQ2xvc2VyIiA8dHlwZSAxMTkgaW50ZXJmYWNlIHsgPyA8dHlwZSA4PjsgPyA8dHlwZSAxMDY+OyB9Pj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDExMj4pIFN0ZG91dFBpcGUgKCkgKD8gPHR5cGUgMTIwICJpby5SZWFkQ2xvc2VyIiA8dHlwZSAxMjEgaW50ZXJmYWNlIHsgPyA8dHlwZSA1PjsgPyA8dHlwZSAxMDY+OyB9Pj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDExMj4pIFN0ZGVyclBpcGUgKCkgKD8gPHR5cGUgMTIwPiwgPyA8dHlwZSAtMTk+KTsKPjsKZnVuYyBDb21tYW5kIChuYW1lIDx0eXBlIC0xNj4sIGFyZyAuLi48dHlwZSAtMTY+KSA8dHlwZSAxMTI+Owp2YXIgRXJyTm90Rm91bmQgPHR5cGUgLTE5PjsKdHlwZSA8dHlwZSAxMjIgIkVycm9yIiA8dHlwZSAxMjMgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBFcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTI0ICo8dHlwZSAxMjI+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKdHlwZSA8dHlwZSAxMjUgIkV4aXRFcnJvciIgPHR5cGUgMTI2IHN0cnVjdCB7ID8gPHR5cGUgODU+OyB9PgogZnVuYyAoZSA8dHlwZSAxMjcgKjx0eXBlIDEyNT4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+OwpmdW5jIExvb2tQYXRoIChmaWxlIDx0eXBlIC0xNj4pICg/IDx0eXBlIC0xNj4sID8gPHR5cGUgLTE5Pik7CmNoZWNrc3VtIEYwRUM4RDdFNUVDMDA4QTcyNTY5NUM5RkIxQTQ1MTQ0M0JFNTVCODc7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAKExAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAANUxAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAD8MQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAHDIAAAEAAAAAAAAAAAAAAAEAAAAAAAAA