f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAACUOgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHBlOwpwa2dwYXRoIGRlYnVnL3BlOwpwcmlvcml0eSA4OwppbXBvcnQgZHdhcmYgZGVidWcvZHdhcmYgImRlYnVnL2R3YXJmIjsKaW1wb3J0IGJpbmFyeSBlbmNvZGluZy9iaW5hcnkgImVuY29kaW5nL2JpbmFyeSI7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCBvcyBvcyAib3MiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW5pdCBwZSBkZWJ1Z19wZS4uaW1wb3J0IDggbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYmluYXJ5IGVuY29kaW5nX2JpbmFyeS4uaW1wb3J0IDQgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgb3Mgb3MuLmltcG9ydCA1IGZpbGVwYXRoIHBhdGhfZmlsZXBhdGguLmltcG9ydCA2IGZtdCBmbXQuLmltcG9ydCA2IGR3YXJmIGRlYnVnX2R3YXJmLi5pbXBvcnQgNzsKdHlwZSA8dHlwZSAxICJDT0ZGU3ltYm9sIiA8dHlwZSAyIHN0cnVjdCB7IE5hbWUgPHR5cGUgMyBbOCBdIDx0eXBlIC01Pj47IFZhbHVlIDx0eXBlIC03PjsgU2VjdGlvbk51bWJlciA8dHlwZSAtMj47IFR5cGUgPHR5cGUgLTY+OyBTdG9yYWdlQ2xhc3MgPHR5cGUgLTU+OyBOdW1iZXJPZkF1eFN5bWJvbHMgPHR5cGUgLTU+OyB9Pj47CmNvbnN0IENPRkZTeW1ib2xTaXplID0gMTggOwp0eXBlIDx0eXBlIDQgIkRhdGFEaXJlY3RvcnkiIDx0eXBlIDUgc3RydWN0IHsgVmlydHVhbEFkZHJlc3MgPHR5cGUgLTc+OyBTaXplIDx0eXBlIC03PjsgfT4+Owp0eXBlIDx0eXBlIDYgIkZpbGUiIDx0eXBlIDcgc3RydWN0IHsgPyA8dHlwZSA4ICJGaWxlSGVhZGVyIiA8dHlwZSA5IHN0cnVjdCB7IE1hY2hpbmUgPHR5cGUgLTY+OyBOdW1iZXJPZlNlY3Rpb25zIDx0eXBlIC02PjsgVGltZURhdGVTdGFtcCA8dHlwZSAtNz47IFBvaW50ZXJUb1N5bWJvbFRhYmxlIDx0eXBlIC03PjsgTnVtYmVyT2ZTeW1ib2xzIDx0eXBlIC03PjsgU2l6ZU9mT3B0aW9uYWxIZWFkZXIgPHR5cGUgLTY+OyBDaGFyYWN0ZXJpc3RpY3MgPHR5cGUgLTY+OyB9Pj47IE9wdGlvbmFsSGVhZGVyIDx0eXBlIDEwIGludGVyZmFjZSB7IH0+OyBTZWN0aW9ucyA8dHlwZSAxMSBbXSA8dHlwZSAxMiAqPHR5cGUgMTMgIlNlY3Rpb24iIDx0eXBlIDE0IHN0cnVjdCB7ID8gPHR5cGUgMTUgIlNlY3Rpb25IZWFkZXIiIDx0eXBlIDE2IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgVmlydHVhbFNpemUgPHR5cGUgLTc+OyBWaXJ0dWFsQWRkcmVzcyA8dHlwZSAtNz47IFNpemUgPHR5cGUgLTc+OyBPZmZzZXQgPHR5cGUgLTc+OyBQb2ludGVyVG9SZWxvY2F0aW9ucyA8dHlwZSAtNz47IFBvaW50ZXJUb0xpbmVOdW1iZXJzIDx0eXBlIC03PjsgTnVtYmVyT2ZSZWxvY2F0aW9ucyA8dHlwZSAtNj47IE51bWJlck9mTGluZU51bWJlcnMgPHR5cGUgLTY+OyBDaGFyYWN0ZXJpc3RpY3MgPHR5cGUgLTc+OyB9Pj47ID8gPHR5cGUgMTcgImlvLlJlYWRlckF0IiA8dHlwZSAxOCBpbnRlcmZhY2UgeyBSZWFkQXQgKHAgPHR5cGUgMTkgW10gPHR5cGUgLTIwPj4sIG9mZiA8dHlwZSAtND4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyAuZGVidWcvcGUuc3IgPHR5cGUgMjAgKjx0eXBlIDIxICJpby5TZWN0aW9uUmVhZGVyIiA8dHlwZSAyMiBzdHJ1Y3QgeyAuaW8uciA8dHlwZSAxNz47IC5pby5iYXNlIDx0eXBlIC00PjsgLmlvLm9mZiA8dHlwZSAtND47IC5pby5saW1pdCA8dHlwZSAtND47IH0+CiBmdW5jIChzIDx0eXBlIDIzICo8dHlwZSAyMT4+KSBTZWVrIChvZmZzZXQgPHR5cGUgLTQ+LCB3aGVuY2UgPHR5cGUgLTExPikgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAocyA8dHlwZSAyMz4pIFJlYWRBdCAocCA8dHlwZSAyNCBbXSA8dHlwZSAtMjA+Piwgb2ZmIDx0eXBlIC00PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAocyA8dHlwZSAyMz4pIFJlYWQgKHAgPHR5cGUgMjUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHMgPHR5cGUgMjM+KSBTaXplICgpIDx0eXBlIC00PjsKPj47IH0+CiBmdW5jIChzIDx0eXBlIDI2ICo8dHlwZSAxMz4+KSBEYXRhICgpICg/IDx0eXBlIDI3IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAocyA8dHlwZSAyNj4pIE9wZW4gKCkgPHR5cGUgMjggImlvLlJlYWRTZWVrZXIiIDx0eXBlIDI5IGludGVyZmFjZSB7ID8gPHR5cGUgMzAgImlvLlJlYWRlciIgPHR5cGUgMzEgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSAzMiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgMzMgImlvLlNlZWtlciIgPHR5cGUgMzQgaW50ZXJmYWNlIHsgU2VlayAob2Zmc2V0IDx0eXBlIC00Piwgd2hlbmNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIC00PiwgPyA8dHlwZSAtMTk+KTsgfT4+OyB9Pj47Cj4+PjsgU3ltYm9scyA8dHlwZSAzNSBbXSA8dHlwZSAzNiAqPHR5cGUgMzcgIlN5bWJvbCIgPHR5cGUgMzggc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBWYWx1ZSA8dHlwZSAtNz47IFNlY3Rpb25OdW1iZXIgPHR5cGUgLTI+OyBUeXBlIDx0eXBlIC02PjsgU3RvcmFnZUNsYXNzIDx0eXBlIC01PjsgfT4+Pj47IC5kZWJ1Zy9wZS5jbG9zZXIgPHR5cGUgMzkgImlvLkNsb3NlciIgPHR5cGUgNDAgaW50ZXJmYWNlIHsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgfT4+OyB9PgogZnVuYyAoZiA8dHlwZSA0MSAqPHR5cGUgNj4+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoZiA8dHlwZSA0MT4pIFNlY3Rpb24gKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMjY+OwogZnVuYyAoZiA8dHlwZSA0MT4pIERXQVJGICgpICg/IDx0eXBlIDQyICo8dHlwZSA0MyAiZGVidWcvZHdhcmYuRGF0YSIgPHR5cGUgNDQgc3RydWN0IHsgLmRlYnVnL2R3YXJmLmFiYnJldiA8dHlwZSA0NSBbXSA8dHlwZSAtMjA+PjsgLmRlYnVnL2R3YXJmLmFyYW5nZXMgPHR5cGUgNDYgW10gPHR5cGUgLTIwPj47IC5kZWJ1Zy9kd2FyZi5mcmFtZSA8dHlwZSA0NyBbXSA8dHlwZSAtMjA+PjsgLmRlYnVnL2R3YXJmLmluZm8gPHR5cGUgNDggW10gPHR5cGUgLTIwPj47IC5kZWJ1Zy9kd2FyZi5saW5lIDx0eXBlIDQ5IFtdIDx0eXBlIC0yMD4+OyAuZGVidWcvZHdhcmYucHVibmFtZXMgPHR5cGUgNTAgW10gPHR5cGUgLTIwPj47IC5kZWJ1Zy9kd2FyZi5yYW5nZXMgPHR5cGUgNTEgW10gPHR5cGUgLTIwPj47IC5kZWJ1Zy9kd2FyZi5zdHIgPHR5cGUgNTIgW10gPHR5cGUgLTIwPj47IC5kZWJ1Zy9kd2FyZi5hYmJyZXZDYWNoZSA8dHlwZSA1MyBtYXAgWzx0eXBlIC03Pl0gPHR5cGUgNTQgIi5kZWJ1Zy9kd2FyZi5hYmJyZXZUYWJsZSIgPHR5cGUgNTUgbWFwIFs8dHlwZSAtNz5dIDx0eXBlIDU2ICIuZGVidWcvZHdhcmYuYWJicmV2IiA8dHlwZSA1NyBzdHJ1Y3QgeyAuZGVidWcvZHdhcmYudGFnIDx0eXBlIDU4ICJkZWJ1Zy9kd2FyZi5UYWciIDx0eXBlIC03PgogZnVuYyAodCA8dHlwZSA1OD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA1OD4pIEdvU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47IC5kZWJ1Zy9kd2FyZi5jaGlsZHJlbiA8dHlwZSAtMTU+OyAuZGVidWcvZHdhcmYuZmllbGQgPHR5cGUgNTkgW10gPHR5cGUgNjAgIi5kZWJ1Zy9kd2FyZi5hZmllbGQiIDx0eXBlIDYxIHN0cnVjdCB7IC5kZWJ1Zy9kd2FyZi5hdHRyIDx0eXBlIDYyICJkZWJ1Zy9kd2FyZi5BdHRyIiA8dHlwZSAtNz4KIGZ1bmMgKGEgPHR5cGUgNjI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGEgPHR5cGUgNjI+KSBHb1N0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyAuZGVidWcvZHdhcmYuZm10IDx0eXBlIDYzICIuZGVidWcvZHdhcmYuZm9ybWF0IiA8dHlwZSAtNz4+OyB9Pj4+OyB9Pj4+Pj47IC5kZWJ1Zy9kd2FyZi5vcmRlciA8dHlwZSA2NCAiZW5jb2RpbmcvYmluYXJ5LkJ5dGVPcmRlciIgPHR5cGUgNjUgaW50ZXJmYWNlIHsgVWludDE2ICg/IDx0eXBlIDY2IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtNj47IFVpbnQzMiAoPyA8dHlwZSA2NyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTc+OyBVaW50NjQgKD8gPHR5cGUgNjggW10gPHR5cGUgLTIwPj4pIDx0eXBlIC04PjsgUHV0VWludDE2ICg/IDx0eXBlIDY5IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC02Pik7IFB1dFVpbnQzMiAoPyA8dHlwZSA3MCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtNz4pOyBQdXRVaW50NjQgKD8gPHR5cGUgNzEgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTg+KTsgU3RyaW5nICgpIDx0eXBlIC0xNj47IH0+PjsgLmRlYnVnL2R3YXJmLnR5cGVDYWNoZSA8dHlwZSA3MiBtYXAgWzx0eXBlIDczICJkZWJ1Zy9kd2FyZi5PZmZzZXQiIDx0eXBlIC03Pj5dIDx0eXBlIDc0ICJkZWJ1Zy9kd2FyZi5UeXBlIiA8dHlwZSA3NSBpbnRlcmZhY2UgeyBDb21tb24gKCkgPHR5cGUgNzYgKjx0eXBlIDc3ICJkZWJ1Zy9kd2FyZi5Db21tb25UeXBlIiA8dHlwZSA3OCBzdHJ1Y3QgeyBCeXRlU2l6ZSA8dHlwZSAtND47IE5hbWUgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGMgPHR5cGUgNzkgKjx0eXBlIDc3Pj4pIENvbW1vbiAoKSA8dHlwZSA3OT47CiBmdW5jIChjIDx0eXBlIDc5PikgU2l6ZSAoKSA8dHlwZSAtND47Cj4+OyBTdHJpbmcgKCkgPHR5cGUgLTE2PjsgU2l6ZSAoKSA8dHlwZSAtND47IH0+Pj47IC5kZWJ1Zy9kd2FyZi50eXBlU2lncyA8dHlwZSA4MCBtYXAgWzx0eXBlIC04Pl0gPHR5cGUgODEgKjx0eXBlIDgyICIuZGVidWcvZHdhcmYudHlwZVVuaXQiIDx0eXBlIDgzIHN0cnVjdCB7ID8gPHR5cGUgODQgIi5kZWJ1Zy9kd2FyZi51bml0IiA8dHlwZSA4NSBzdHJ1Y3QgeyAuZGVidWcvZHdhcmYuYmFzZSA8dHlwZSA3Mz47IC5kZWJ1Zy9kd2FyZi5vZmYgPHR5cGUgNzM+OyAuZGVidWcvZHdhcmYubGluZW9mZiA8dHlwZSA3Mz47IC5kZWJ1Zy9kd2FyZi5kYXRhIDx0eXBlIDg2IFtdIDx0eXBlIC0yMD4+OyAuZGVidWcvZHdhcmYuYXRhYmxlIDx0eXBlIDU0PjsgLmRlYnVnL2R3YXJmLmFzaXplIDx0eXBlIC0xMT47IC5kZWJ1Zy9kd2FyZi52ZXJzIDx0eXBlIC0xMT47IC5kZWJ1Zy9kd2FyZi5pczY0IDx0eXBlIC0xNT47IC5kZWJ1Zy9kd2FyZi5kaXIgPHR5cGUgLTE2PjsgLmRlYnVnL2R3YXJmLnBjIDx0eXBlIDg3IFtdIDx0eXBlIDg4ICIuZGVidWcvZHdhcmYuYWRkclJhbmdlIiA8dHlwZSA4OSBzdHJ1Y3QgeyAuZGVidWcvZHdhcmYubG93IDx0eXBlIC04PjsgLmRlYnVnL2R3YXJmLmhpZ2ggPHR5cGUgLTg+OyB9Pj4+OyAuZGVidWcvZHdhcmYubGluZXMgPHR5cGUgOTAgW10gPHR5cGUgOTEgIi5kZWJ1Zy9kd2FyZi5tYXBMaW5lSW5mbyIgPHR5cGUgOTIgc3RydWN0IHsgLmRlYnVnL2R3YXJmLmxpbmUgPHR5cGUgOTMgImRlYnVnL2R3YXJmLkxpbmUiIDx0eXBlIDk0IHN0cnVjdCB7IEZpbGVuYW1lIDx0eXBlIC0xNj47IE9wSW5kZXggPHR5cGUgLTExPjsgTGluZSA8dHlwZSAtMTE+OyBDb2x1bW4gPHR5cGUgLTExPjsgSVNBIDx0eXBlIC0xMT47IERpc2NyaW1pbmF0b3IgPHR5cGUgLTExPjsgU3RtdCA8dHlwZSAtMTU+OyBCbG9jayA8dHlwZSAtMTU+OyBFbmRQcm9sb2d1ZSA8dHlwZSAtMTU+OyBCZWdpbkVwaWxvZ3VlIDx0eXBlIC0xNT47IH0+PjsgLmRlYnVnL2R3YXJmLmFkZHJzIDx0eXBlIDk1ICIuZGVidWcvZHdhcmYubGluZUFkZHJzIiA8dHlwZSA5NiBbXSA8dHlwZSA5NyAiLmRlYnVnL2R3YXJmLm9uZUxpbmVJbmZvIiA8dHlwZSA5OCBzdHJ1Y3QgeyAuZGVidWcvZHdhcmYucGMgPHR5cGUgLTg+OyAuZGVidWcvZHdhcmYubGluZSA8dHlwZSAtMTE+OyB9Pj4+CiBmdW5jIChwIDx0eXBlIDk1PikgTGVzcyAoaSA8dHlwZSAtMTE+LCBqIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jIChwIDx0eXBlIDk1PikgTGVuICgpIDx0eXBlIC0xMT47CiBmdW5jIChwIDx0eXBlIDk1PikgU3dhcCAoaSA8dHlwZSAtMTE+LCBqIDx0eXBlIC0xMT4pOwo+OyB9Pj4+OyB9PgogZnVuYyAodSA8dHlwZSA5OSAqPHR5cGUgODQ+PikgLmRlYnVnL2R3YXJmLmR3YXJmNjQgKCkgKD8gPHR5cGUgLTE1PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHUgPHR5cGUgOTk+KSAuZGVidWcvZHdhcmYuYWRkcnNpemUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHUgPHR5cGUgOTk+KSAuZGVidWcvZHdhcmYudmVyc2lvbiAoKSA8dHlwZSAtMTE+Owo+OyAuZGVidWcvZHdhcmYudG9mZiA8dHlwZSA3Mz47IC5kZWJ1Zy9kd2FyZi5uYW1lIDx0eXBlIC0xNj47IC5kZWJ1Zy9kd2FyZi5jYWNoZSA8dHlwZSA3ND47IH0+Pj4+OyAuZGVidWcvZHdhcmYudW5pdCA8dHlwZSAxMDAgW10gPHR5cGUgODQ+PjsgfT4KIGZ1bmMgKGQgPHR5cGUgMTAxICo8dHlwZSA0Mz4+KSBSZWFkZXIgKCkgPHR5cGUgMTAyICo8dHlwZSAxMDMgImRlYnVnL2R3YXJmLlJlYWRlciIgPHR5cGUgMTA0IHN0cnVjdCB7IC5kZWJ1Zy9kd2FyZi5iIDx0eXBlIDEwNSAiLmRlYnVnL2R3YXJmLmJ1ZiIgPHR5cGUgMTA2IHN0cnVjdCB7IC5kZWJ1Zy9kd2FyZi5kd2FyZiA8dHlwZSAxMDE+OyAuZGVidWcvZHdhcmYub3JkZXIgPHR5cGUgNjQ+OyAuZGVidWcvZHdhcmYuZm9ybWF0IDx0eXBlIDEwNyAiLmRlYnVnL2R3YXJmLmRhdGFGb3JtYXQiIDx0eXBlIDEwOCBpbnRlcmZhY2UgeyAuZGVidWcvZHdhcmYudmVyc2lvbiAoKSA8dHlwZSAtMTE+OyAuZGVidWcvZHdhcmYuZHdhcmY2NCAoKSAoZHdhcmY2NCA8dHlwZSAtMTU+LCBpc0tub3duIDx0eXBlIC0xNT4pOyAuZGVidWcvZHdhcmYuYWRkcnNpemUgKCkgPHR5cGUgLTExPjsgfT4+OyAuZGVidWcvZHdhcmYubmFtZSA8dHlwZSAtMTY+OyAuZGVidWcvZHdhcmYub2ZmIDx0eXBlIDczPjsgLmRlYnVnL2R3YXJmLmRhdGEgPHR5cGUgMTA5IFtdIDx0eXBlIC0yMD4+OyAuZGVidWcvZHdhcmYuZXJyIDx0eXBlIC0xOT47IH0+CiBmdW5jIChiIDx0eXBlIDExMCAqPHR5cGUgMTA1Pj4pIC5kZWJ1Zy9kd2FyZi5pbnQgKCkgPHR5cGUgLTQ+OwogZnVuYyAoYiA8dHlwZSAxMTA+KSAuZGVidWcvZHdhcmYudWludDMyICgpIDx0eXBlIC03PjsKIGZ1bmMgKGIgPHR5cGUgMTEwPikgLmRlYnVnL2R3YXJmLmVycm9yIChzIDx0eXBlIC0xNj4pOwogZnVuYyAoYiA8dHlwZSAxMTA+KSAuZGVidWcvZHdhcmYuc3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChiIDx0eXBlIDExMD4pIC5kZWJ1Zy9kd2FyZi5hZGRyICgpIDx0eXBlIC04PjsKIGZ1bmMgKGIgPHR5cGUgMTEwPikgLmRlYnVnL2R3YXJmLmJ5dGVzIChuIDx0eXBlIC0xMT4pIDx0eXBlIDExMSBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKGIgPHR5cGUgMTEwPikgLmRlYnVnL2R3YXJmLnNraXAgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDExMD4pIC5kZWJ1Zy9kd2FyZi51aW50OCAoKSA8dHlwZSAtNT47CiBmdW5jIChiIDx0eXBlIDExMD4pIC5kZWJ1Zy9kd2FyZi51aW50MTYgKCkgPHR5cGUgLTY+OwogZnVuYyAoYiA8dHlwZSAxMTA+KSAuZGVidWcvZHdhcmYudWludDY0ICgpIDx0eXBlIC04PjsKIGZ1bmMgKGIgPHR5cGUgMTEwPikgLmRlYnVnL2R3YXJmLnZhcmludCAoKSAoYyA8dHlwZSAtOD4sIGJpdHMgPHR5cGUgLTEyPik7CiBmdW5jIChiIDx0eXBlIDExMD4pIC5kZWJ1Zy9kd2FyZi51aW50ICgpIDx0eXBlIC04PjsKIGZ1bmMgKGIgPHR5cGUgMTEwPikgLmRlYnVnL2R3YXJmLmVudHJ5IChhdGFiIDx0eXBlIDU0PiwgdWJhc2UgPHR5cGUgNzM+KSA8dHlwZSAxMTIgKjx0eXBlIDExMyAiZGVidWcvZHdhcmYuRW50cnkiIDx0eXBlIDExNCBzdHJ1Y3QgeyBPZmZzZXQgPHR5cGUgNzM+OyBUYWcgPHR5cGUgNTg+OyBDaGlsZHJlbiA8dHlwZSAtMTU+OyBGaWVsZCA8dHlwZSAxMTUgW10gPHR5cGUgMTE2ICJkZWJ1Zy9kd2FyZi5GaWVsZCIgPHR5cGUgMTE3IHN0cnVjdCB7IEF0dHIgPHR5cGUgNjI+OyBWYWwgPHR5cGUgMTE4IGludGVyZmFjZSB7IH0+OyB9Pj4+OyB9PgogZnVuYyAoZSA8dHlwZSAxMTkgKjx0eXBlIDExMz4+KSBWYWwgKGEgPHR5cGUgNjI+KSA8dHlwZSAxMjAgaW50ZXJmYWNlIHsgfT47Cj4+Owo+OyAuZGVidWcvZHdhcmYuZCA8dHlwZSAxMDE+OyAuZGVidWcvZHdhcmYuZXJyIDx0eXBlIC0xOT47IC5kZWJ1Zy9kd2FyZi51bml0IDx0eXBlIC0xMT47IC5kZWJ1Zy9kd2FyZi5sYXN0Q2hpbGRyZW4gPHR5cGUgLTE1PjsgLmRlYnVnL2R3YXJmLmxhc3RTaWJsaW5nIDx0eXBlIDczPjsgfT4KIGZ1bmMgKHIgPHR5cGUgMTIxICo8dHlwZSAxMDM+PikgU2VlayAob2ZmIDx0eXBlIDczPik7CiBmdW5jIChyIDx0eXBlIDEyMT4pIE5leHQgKCkgKD8gPHR5cGUgMTEyPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMTIxPikgU2tpcENoaWxkcmVuICgpOwogZnVuYyAociA8dHlwZSAxMjE+KSAuZGVidWcvZHdhcmYubWF5YmVOZXh0VW5pdCAoKTsKIGZ1bmMgKHIgPHR5cGUgMTIxPikgLmRlYnVnL2R3YXJmLm9mZnNldCAoKSA8dHlwZSA3Mz47CiBmdW5jIChyIDx0eXBlIDEyMT4pIC5kZWJ1Zy9kd2FyZi5jbG9uZSAoKSA8dHlwZSAxMjIgIi5kZWJ1Zy9kd2FyZi50eXBlUmVhZGVyIiA8dHlwZSAxMjMgaW50ZXJmYWNlIHsgU2VlayAoPyA8dHlwZSA3Mz4pOyBOZXh0ICgpICg/IDx0eXBlIDExMj4sID8gPHR5cGUgLTE5Pik7IC5kZWJ1Zy9kd2FyZi5jbG9uZSAoKSA8dHlwZSAxMjI+OyAuZGVidWcvZHdhcmYub2Zmc2V0ICgpIDx0eXBlIDczPjsgfT4+Owo+PjsKIGZ1bmMgKGQgPHR5cGUgMTAxPikgLmRlYnVnL2R3YXJmLnJlYWRUeXBlIChuYW1lIDx0eXBlIC0xNj4sIHIgPHR5cGUgMTIyPiwgb2ZmIDx0eXBlIDczPiwgdHlwZUNhY2hlIDx0eXBlIDEyNCBtYXAgWzx0eXBlIDczPl0gPHR5cGUgNzQ+PikgKD8gPHR5cGUgNzQ+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSAxMDE+KSAuZGVidWcvZHdhcmYucGFyc2VUeXBlcyAobmFtZSA8dHlwZSAtMTY+LCB0eXBlcyA8dHlwZSAxMjUgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jIChkIDx0eXBlIDEwMT4pIC5kZWJ1Zy9kd2FyZi5hZGRMaW5lIChsaW5lcyA8dHlwZSAxMjYgW10gPHR5cGUgOTE+PiwgbGluZUluZm8gPHR5cGUgOTM+LCBhZGRyZXNzIDx0eXBlIC04PiwgbGluZSA8dHlwZSAtMTE+LCBuZXdMaW5lSW5mbyA8dHlwZSAtMTU+KSAoPyA8dHlwZSAxMjcgW10gPHR5cGUgOTE+PiwgPyA8dHlwZSA5Mz4sID8gPHR5cGUgLTE1Pik7CiBmdW5jIChkIDx0eXBlIDEwMT4pIC5kZWJ1Zy9kd2FyZi5wYXJzZVVuaXRzICgpICg/IDx0eXBlIDEyOCBbXSA8dHlwZSA4ND4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSAxMDE+KSAuZGVidWcvZHdhcmYuZmluZExpbmUgKHUgPHR5cGUgOTk+LCBwYyA8dHlwZSAtOD4pICg/IDx0eXBlIDEyOSBbXSA8dHlwZSAxMzAgKjx0eXBlIDkzPj4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSAxMDE+KSAuZGVidWcvZHdhcmYucGFyc2VBYmJyZXYgKG9mZiA8dHlwZSAtNz4pICg/IDx0eXBlIDU0PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGQgPHR5cGUgMTAxPikgLmRlYnVnL2R3YXJmLnJlYWRBZGRyZXNzUmFuZ2VzIChvZmYgPHR5cGUgNzM+LCBiYXNlIDx0eXBlIC04PiwgdSA8dHlwZSA5OT4pIDx0eXBlIC0xOT47CiBmdW5jIChkIDx0eXBlIDEwMT4pIC5kZWJ1Zy9kd2FyZi5wYXJzZUxpbmUgKHUgPHR5cGUgOTk+KSA8dHlwZSAtMTk+OwogZnVuYyAoZCA8dHlwZSAxMDE+KSAuZGVidWcvZHdhcmYuc2lnVG9UeXBlIChzaWcgPHR5cGUgLTg+KSAoPyA8dHlwZSA3ND4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChkIDx0eXBlIDEwMT4pIC5kZWJ1Zy9kd2FyZi5yZWFkVW5pdExpbmUgKGkgPHR5cGUgLTExPiwgdSA8dHlwZSA5OT4pIDx0eXBlIC0xOT47CiBmdW5jIChkIDx0eXBlIDEwMT4pIExpbmVGb3JQQyAocGMgPHR5cGUgLTg+KSAoPyA8dHlwZSAxMzEgW10gPHR5cGUgMTMwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChkIDx0eXBlIDEwMT4pIEZpbGVMaW5lIChwYyA8dHlwZSAtOD4pICg/IDx0eXBlIC0xNj4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGQgPHR5cGUgMTAxPikgVHlwZSAob2ZmIDx0eXBlIDczPikgKD8gPHR5cGUgNzQ+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSAxMDE+KSAuZGVidWcvZHdhcmYucGFyc2VMaW5lUHJvZ3JhbSAodSA8dHlwZSA5OT4sIGIgPHR5cGUgMTEwPiwgaGRyIDx0eXBlIDEzMiAiLmRlYnVnL2R3YXJmLmxpbmVIZHIiIDx0eXBlIDEzMyBzdHJ1Y3QgeyAuZGVidWcvZHdhcmYudmVyc2lvbiA8dHlwZSAtNj47IC5kZWJ1Zy9kd2FyZi5taW5JbnNuTGVuIDx0eXBlIC01PjsgLmRlYnVnL2R3YXJmLm1heE9wc1Blckluc24gPHR5cGUgLTU+OyAuZGVidWcvZHdhcmYuZGVmU3RtdCA8dHlwZSAtMTU+OyAuZGVidWcvZHdhcmYubGluZUJhc2UgPHR5cGUgLTE+OyAuZGVidWcvZHdhcmYubGluZVJhbmdlIDx0eXBlIC01PjsgLmRlYnVnL2R3YXJmLm9wQmFzZSA8dHlwZSAtNT47IC5kZWJ1Zy9kd2FyZi5vcExlbiA8dHlwZSAxMzQgW10gPHR5cGUgLTU+PjsgLmRlYnVnL2R3YXJmLmRpcnMgPHR5cGUgMTM1IFtdIDx0eXBlIC0xNj4+OyAuZGVidWcvZHdhcmYuZmlsZXMgPHR5cGUgMTM2IFtdIDx0eXBlIC0xNj4+OyB9Pj4sIGVuZCA8dHlwZSA3Mz4pOwogZnVuYyAoZCA8dHlwZSAxMDE+KSBBZGRUeXBlcyAobmFtZSA8dHlwZSAtMTY+LCB0eXBlcyA8dHlwZSAxMzcgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jIChkIDx0eXBlIDEwMT4pIC5kZWJ1Zy9kd2FyZi5wYXJzZUxpbmVIZHIgKHUgPHR5cGUgOTk+LCBiIDx0eXBlIDExMD4sIGR3YXJmNjQgPHR5cGUgLTE1PikgKGhkciA8dHlwZSAxMzI+KTsKIGZ1bmMgKGQgPHR5cGUgMTAxPikgLmRlYnVnL2R3YXJmLnVuaXRSZWFkZXIgKGkgPHR5cGUgLTExPikgPHR5cGUgMTAyPjsKPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDQxPikgSW1wb3J0ZWRTeW1ib2xzICgpICg/IDx0eXBlIDEzOCBbXSA8dHlwZSAtMTY+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgNDE+KSBJbXBvcnRlZExpYnJhcmllcyAoKSAoPyA8dHlwZSAxMzkgW10gPHR5cGUgLTE2Pj4sID8gPHR5cGUgLTE5Pik7Cj47CnR5cGUgPHR5cGUgOD47CnR5cGUgPHR5cGUgMTQwICJGb3JtYXRFcnJvciIgPHR5cGUgMTQxIHN0cnVjdCB7IC5kZWJ1Zy9wZS5vZmYgPHR5cGUgLTQ+OyAuZGVidWcvcGUubXNnIDx0eXBlIC0xNj47IC5kZWJ1Zy9wZS52YWwgPHR5cGUgMTQyIGludGVyZmFjZSB7IH0+OyB9PgogZnVuYyAoZSA8dHlwZSAxNDMgKjx0eXBlIDE0MD4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+Owpjb25zdCBJTUFHRV9GSUxFX01BQ0hJTkVfQU0zMyA9IDQ2NyA7CmNvbnN0IElNQUdFX0ZJTEVfTUFDSElORV9BTUQ2NCA9IDM0NDA0IDsKY29uc3QgSU1BR0VfRklMRV9NQUNISU5FX0FSTSA9IDQ0OCA7CmNvbnN0IElNQUdFX0ZJTEVfTUFDSElORV9FQkMgPSAzNzcyIDsKY29uc3QgSU1BR0VfRklMRV9NQUNISU5FX0kzODYgPSAzMzIgOwpjb25zdCBJTUFHRV9GSUxFX01BQ0hJTkVfSUE2NCA9IDUxMiA7CmNvbnN0IElNQUdFX0ZJTEVfTUFDSElORV9NMzJSID0gMzY5MjkgOwpjb25zdCBJTUFHRV9GSUxFX01BQ0hJTkVfTUlQUzE2ID0gNjE0IDsKY29uc3QgSU1BR0VfRklMRV9NQUNISU5FX01JUFNGUFUgPSA4NzAgOwpjb25zdCBJTUFHRV9GSUxFX01BQ0hJTkVfTUlQU0ZQVTE2ID0gMTEyNiA7CmNvbnN0IElNQUdFX0ZJTEVfTUFDSElORV9QT1dFUlBDID0gNDk2IDsKY29uc3QgSU1BR0VfRklMRV9NQUNISU5FX1BPV0VSUENGUCA9IDQ5NyA7CmNvbnN0IElNQUdFX0ZJTEVfTUFDSElORV9SNDAwMCA9IDM1OCA7CmNvbnN0IElNQUdFX0ZJTEVfTUFDSElORV9TSDMgPSA0MTggOwpjb25zdCBJTUFHRV9GSUxFX01BQ0hJTkVfU0gzRFNQID0gNDE5IDsKY29uc3QgSU1BR0VfRklMRV9NQUNISU5FX1NINCA9IDQyMiA7CmNvbnN0IElNQUdFX0ZJTEVfTUFDSElORV9TSDUgPSA0MjQgOwpjb25zdCBJTUFHRV9GSUxFX01BQ0hJTkVfVEhVTUIgPSA0NTAgOwpjb25zdCBJTUFHRV9GSUxFX01BQ0hJTkVfVU5LTk9XTiA9IDAgOwpjb25zdCBJTUFHRV9GSUxFX01BQ0hJTkVfV0NFTUlQU1YyID0gMzYxIDsKdHlwZSA8dHlwZSAxNDQgIkltcG9ydERpcmVjdG9yeSIgPHR5cGUgMTQ1IHN0cnVjdCB7IE9yaWdpbmFsRmlyc3RUaHVuayA8dHlwZSAtNz47IFRpbWVEYXRlU3RhbXAgPHR5cGUgLTc+OyBGb3J3YXJkZXJDaGFpbiA8dHlwZSAtNz47IE5hbWUgPHR5cGUgLTc+OyBGaXJzdFRodW5rIDx0eXBlIC03PjsgLmRlYnVnL3BlLmRsbCA8dHlwZSAtMTY+OyB9Pj47CmZ1bmMgTmV3RmlsZSAociA8dHlwZSAxNz4pICg/IDx0eXBlIDQxPiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBPcGVuIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDQxPiwgPyA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSAxNDYgIk9wdGlvbmFsSGVhZGVyMzIiIDx0eXBlIDE0NyBzdHJ1Y3QgeyBNYWdpYyA8dHlwZSAtNj47IE1ham9yTGlua2VyVmVyc2lvbiA8dHlwZSAtNT47IE1pbm9yTGlua2VyVmVyc2lvbiA8dHlwZSAtNT47IFNpemVPZkNvZGUgPHR5cGUgLTc+OyBTaXplT2ZJbml0aWFsaXplZERhdGEgPHR5cGUgLTc+OyBTaXplT2ZVbmluaXRpYWxpemVkRGF0YSA8dHlwZSAtNz47IEFkZHJlc3NPZkVudHJ5UG9pbnQgPHR5cGUgLTc+OyBCYXNlT2ZDb2RlIDx0eXBlIC03PjsgQmFzZU9mRGF0YSA8dHlwZSAtNz47IEltYWdlQmFzZSA8dHlwZSAtNz47IFNlY3Rpb25BbGlnbm1lbnQgPHR5cGUgLTc+OyBGaWxlQWxpZ25tZW50IDx0eXBlIC03PjsgTWFqb3JPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIDx0eXBlIC02PjsgTWlub3JPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIDx0eXBlIC02PjsgTWFqb3JJbWFnZVZlcnNpb24gPHR5cGUgLTY+OyBNaW5vckltYWdlVmVyc2lvbiA8dHlwZSAtNj47IE1ham9yU3Vic3lzdGVtVmVyc2lvbiA8dHlwZSAtNj47IE1pbm9yU3Vic3lzdGVtVmVyc2lvbiA8dHlwZSAtNj47IFdpbjMyVmVyc2lvblZhbHVlIDx0eXBlIC03PjsgU2l6ZU9mSW1hZ2UgPHR5cGUgLTc+OyBTaXplT2ZIZWFkZXJzIDx0eXBlIC03PjsgQ2hlY2tTdW0gPHR5cGUgLTc+OyBTdWJzeXN0ZW0gPHR5cGUgLTY+OyBEbGxDaGFyYWN0ZXJpc3RpY3MgPHR5cGUgLTY+OyBTaXplT2ZTdGFja1Jlc2VydmUgPHR5cGUgLTc+OyBTaXplT2ZTdGFja0NvbW1pdCA8dHlwZSAtNz47IFNpemVPZkhlYXBSZXNlcnZlIDx0eXBlIC03PjsgU2l6ZU9mSGVhcENvbW1pdCA8dHlwZSAtNz47IExvYWRlckZsYWdzIDx0eXBlIC03PjsgTnVtYmVyT2ZSdmFBbmRTaXplcyA8dHlwZSAtNz47IERhdGFEaXJlY3RvcnkgPHR5cGUgMTQ4IFsxNiBdIDx0eXBlIDQ+PjsgfT4+Owp0eXBlIDx0eXBlIDE0OSAiT3B0aW9uYWxIZWFkZXI2NCIgPHR5cGUgMTUwIHN0cnVjdCB7IE1hZ2ljIDx0eXBlIC02PjsgTWFqb3JMaW5rZXJWZXJzaW9uIDx0eXBlIC01PjsgTWlub3JMaW5rZXJWZXJzaW9uIDx0eXBlIC01PjsgU2l6ZU9mQ29kZSA8dHlwZSAtNz47IFNpemVPZkluaXRpYWxpemVkRGF0YSA8dHlwZSAtNz47IFNpemVPZlVuaW5pdGlhbGl6ZWREYXRhIDx0eXBlIC03PjsgQWRkcmVzc09mRW50cnlQb2ludCA8dHlwZSAtNz47IEJhc2VPZkNvZGUgPHR5cGUgLTc+OyBJbWFnZUJhc2UgPHR5cGUgLTg+OyBTZWN0aW9uQWxpZ25tZW50IDx0eXBlIC03PjsgRmlsZUFsaWdubWVudCA8dHlwZSAtNz47IE1ham9yT3BlcmF0aW5nU3lzdGVtVmVyc2lvbiA8dHlwZSAtNj47IE1pbm9yT3BlcmF0aW5nU3lzdGVtVmVyc2lvbiA8dHlwZSAtNj47IE1ham9ySW1hZ2VWZXJzaW9uIDx0eXBlIC02PjsgTWlub3JJbWFnZVZlcnNpb24gPHR5cGUgLTY+OyBNYWpvclN1YnN5c3RlbVZlcnNpb24gPHR5cGUgLTY+OyBNaW5vclN1YnN5c3RlbVZlcnNpb24gPHR5cGUgLTY+OyBXaW4zMlZlcnNpb25WYWx1ZSA8dHlwZSAtNz47IFNpemVPZkltYWdlIDx0eXBlIC03PjsgU2l6ZU9mSGVhZGVycyA8dHlwZSAtNz47IENoZWNrU3VtIDx0eXBlIC03PjsgU3Vic3lzdGVtIDx0eXBlIC02PjsgRGxsQ2hhcmFjdGVyaXN0aWNzIDx0eXBlIC02PjsgU2l6ZU9mU3RhY2tSZXNlcnZlIDx0eXBlIC04PjsgU2l6ZU9mU3RhY2tDb21taXQgPHR5cGUgLTg+OyBTaXplT2ZIZWFwUmVzZXJ2ZSA8dHlwZSAtOD47IFNpemVPZkhlYXBDb21taXQgPHR5cGUgLTg+OyBMb2FkZXJGbGFncyA8dHlwZSAtNz47IE51bWJlck9mUnZhQW5kU2l6ZXMgPHR5cGUgLTc+OyBEYXRhRGlyZWN0b3J5IDx0eXBlIDE1MSBbMTYgXSA8dHlwZSA0Pj47IH0+PjsKdHlwZSA8dHlwZSAxMz47CnR5cGUgPHR5cGUgMTU+Owp0eXBlIDx0eXBlIDE1MiAiU2VjdGlvbkhlYWRlcjMyIiA8dHlwZSAxNTMgc3RydWN0IHsgTmFtZSA8dHlwZSAxNTQgWzggXSA8dHlwZSAtNT4+OyBWaXJ0dWFsU2l6ZSA8dHlwZSAtNz47IFZpcnR1YWxBZGRyZXNzIDx0eXBlIC03PjsgU2l6ZU9mUmF3RGF0YSA8dHlwZSAtNz47IFBvaW50ZXJUb1Jhd0RhdGEgPHR5cGUgLTc+OyBQb2ludGVyVG9SZWxvY2F0aW9ucyA8dHlwZSAtNz47IFBvaW50ZXJUb0xpbmVOdW1iZXJzIDx0eXBlIC03PjsgTnVtYmVyT2ZSZWxvY2F0aW9ucyA8dHlwZSAtNj47IE51bWJlck9mTGluZU51bWJlcnMgPHR5cGUgLTY+OyBDaGFyYWN0ZXJpc3RpY3MgPHR5cGUgLTc+OyB9Pj47CnR5cGUgPHR5cGUgMzc+OwpjaGVja3N1bSA3RDFFOTUzQ0U3MjJCQUY2MzZENTdCQ0QyMjg5OTk2QjYyNDg2OTVDOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAAAVOgAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAABJOgAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAcDoAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAJA6AAABAAAAAAAAAAAAAAABAAAAAAAAAA==