f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAACoGQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGNzdjsKcGtncGF0aCBlbmNvZGluZy9jc3Y7CnByaW9yaXR5IDc7CmltcG9ydCBidWZpbyBidWZpbyAiYnVmaW8iOwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGVycm9ycyBlcnJvcnMgImVycm9ycyI7CmltcG9ydCBmbXQgZm10ICJmbXQiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IHN0cmluZ3Mgc3RyaW5ncyAic3RyaW5ncyI7CmltcG9ydCB1bmljb2RlIHVuaWNvZGUgInVuaWNvZGUiOwppbXBvcnQgdXRmOCB1bmljb2RlL3V0ZjggInVuaWNvZGUvdXRmOCI7CmluaXQgY3N2IGVuY29kaW5nX2Nzdi4uaW1wb3J0IDcgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgYnVmaW8gYnVmaW8uLmltcG9ydCA1IG9zIG9zLi5pbXBvcnQgNSBmbXQgZm10Li5pbXBvcnQgNjsKdmFyIEVyckJhcmVRdW90ZSA8dHlwZSAtMTk+Owp2YXIgRXJyRmllbGRDb3VudCA8dHlwZSAtMTk+Owp2YXIgRXJyUXVvdGUgPHR5cGUgLTE5PjsKdmFyIEVyclRyYWlsaW5nQ29tbWEgPHR5cGUgLTE5PjsKZnVuYyBOZXdSZWFkZXIgKHIgPHR5cGUgMSAiaW8uUmVhZGVyIiA8dHlwZSAyIGludGVyZmFjZSB7IFJlYWQgKHAgPHR5cGUgMyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4pIDx0eXBlIDQgKjx0eXBlIDUgIlJlYWRlciIgPHR5cGUgNiBzdHJ1Y3QgeyBDb21tYSA8dHlwZSAtMjE+OyBDb21tZW50IDx0eXBlIC0yMT47IEZpZWxkc1BlclJlY29yZCA8dHlwZSAtMTE+OyBMYXp5UXVvdGVzIDx0eXBlIC0xNT47IFRyYWlsaW5nQ29tbWEgPHR5cGUgLTE1PjsgVHJpbUxlYWRpbmdTcGFjZSA8dHlwZSAtMTU+OyAuZW5jb2RpbmcvY3N2LmxpbmUgPHR5cGUgLTExPjsgLmVuY29kaW5nL2Nzdi5jb2x1bW4gPHR5cGUgLTExPjsgLmVuY29kaW5nL2Nzdi5yIDx0eXBlIDcgKjx0eXBlIDggImJ1ZmlvLlJlYWRlciIgPHR5cGUgOSBzdHJ1Y3QgeyAuYnVmaW8uYnVmIDx0eXBlIDEwIFtdIDx0eXBlIC0yMD4+OyAuYnVmaW8ucmQgPHR5cGUgMT47IC5idWZpby5yIDx0eXBlIC0xMT47IC5idWZpby53IDx0eXBlIC0xMT47IC5idWZpby5lcnIgPHR5cGUgLTE5PjsgLmJ1ZmlvLmxhc3RCeXRlIDx0eXBlIC0xMT47IC5idWZpby5sYXN0UnVuZVNpemUgPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGIgPHR5cGUgMTEgKjx0eXBlIDg+PikgVW5yZWFkQnl0ZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAxMT4pIFJlYWRTdHJpbmcgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIC0xNj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTE+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDExPikgV3JpdGVUbyAodyA8dHlwZSAxMiAiaW8uV3JpdGVyIiA8dHlwZSAxMyBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSAxNCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAxMT4pIFJlYWRCeXRlcyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMTUgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTE+KSAuYnVmaW8ud3JpdGVCdWYgKHcgPHR5cGUgMTI+KSAoPyA8dHlwZSAtND4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDExPikgUmVhZExpbmUgKCkgKGxpbmUgPHR5cGUgMTYgW10gPHR5cGUgLTIwPj4sIGlzUHJlZml4IDx0eXBlIC0xNT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTE+KSBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTE+KSBSZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDE3IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDExPikgUmVzZXQgKHIgPHR5cGUgMT4pOwogZnVuYyAoYiA8dHlwZSAxMT4pIFJlYWQgKHAgPHR5cGUgMTggW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTE+KSAuYnVmaW8uZmlsbCAoKTsKIGZ1bmMgKGIgPHR5cGUgMTE+KSBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDExPikgQnVmZmVyZWQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMTE+KSAuYnVmaW8ucmVzZXQgKGJ1ZiA8dHlwZSAxOSBbXSA8dHlwZSAtMjA+PiwgciA8dHlwZSAxPik7CiBmdW5jIChiIDx0eXBlIDExPikgUGVlayAobiA8dHlwZSAtMTE+KSAoPyA8dHlwZSAyMCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMTE+KSAuYnVmaW8ucmVhZEVyciAoKSA8dHlwZSAtMTk+Owo+PjsgLmVuY29kaW5nL2Nzdi5maWVsZCA8dHlwZSAyMSAiYnl0ZXMuQnVmZmVyIiA8dHlwZSAyMiBzdHJ1Y3QgeyAuYnl0ZXMuYnVmIDx0eXBlIDIzIFtdIDx0eXBlIC0yMD4+OyAuYnl0ZXMub2ZmIDx0eXBlIC0xMT47IC5ieXRlcy5ydW5lQnl0ZXMgPHR5cGUgMjQgWzQgXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLmJvb3RzdHJhcCA8dHlwZSAyNSBbNjQgXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLmxhc3RSZWFkIDx0eXBlIDI2ICIuYnl0ZXMucmVhZE9wIiA8dHlwZSAtMTE+PjsgfT4KIGZ1bmMgKGIgPHR5cGUgMjcgKjx0eXBlIDIxPj4pIFVucmVhZEJ5dGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBUcnVuY2F0ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBXcml0ZVN0cmluZyAocyA8dHlwZSAtMTY+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3PikgUmVhZFN0cmluZyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNz4pIFJlYWRCeXRlICgpIChjIDx0eXBlIC0yMD4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBOZXh0IChuIDx0eXBlIC0xMT4pIDx0eXBlIDI4IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoYiA8dHlwZSAyNz4pIFdyaXRlUnVuZSAociA8dHlwZSAtMjE+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChiIDx0eXBlIDI3PikgV3JpdGVUbyAodyA8dHlwZSAxMj4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNz4pIFJlYWRCeXRlcyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMjkgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc+KSAuYnl0ZXMuZ3JvdyAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAyNz4pIFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNz4pIFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBSZWFkIChwIDx0eXBlIDMwIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3PikgUmVzZXQgKCk7CiBmdW5jIChiIDx0eXBlIDI3PikgLmJ5dGVzLnJlYWRTbGljZSAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMzEgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBXcml0ZUJ5dGUgKGMgPHR5cGUgLTIwPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBXcml0ZSAocCA8dHlwZSAzMiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNz4pIFJlYWRGcm9tIChyIDx0eXBlIDE+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMjc+KSBHcm93IChuIDx0eXBlIC0xMT4pOwogZnVuYyAoYiA8dHlwZSAyNz4pIEJ5dGVzICgpIDx0eXBlIDMzIFtdIDx0eXBlIC0yMD4+Owo+OyB9PgogZnVuYyAociA8dHlwZSAzNCAqPHR5cGUgNT4+KSAuZW5jb2RpbmcvY3N2LmVycm9yIChlcnIgPHR5cGUgLTE5PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMzQ+KSBSZWFkICgpIChyZWNvcmQgPHR5cGUgMzUgW10gPHR5cGUgLTE2Pj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMzQ+KSBSZWFkQWxsICgpIChyZWNvcmRzIDx0eXBlIDM2IFtdIDx0eXBlIDM3IFtdIDx0eXBlIC0xNj4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAociA8dHlwZSAzND4pIC5lbmNvZGluZy9jc3YucmVhZFJ1bmUgKCkgKD8gPHR5cGUgLTIxPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMzQ+KSAuZW5jb2RpbmcvY3N2LnNraXAgKGRlbGltIDx0eXBlIC0yMT4pIDx0eXBlIC0xOT47CiBmdW5jIChyIDx0eXBlIDM0PikgLmVuY29kaW5nL2Nzdi5wYXJzZVJlY29yZCAoKSAoZmllbGRzIDx0eXBlIDM4IFtdIDx0eXBlIC0xNj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDM0PikgLmVuY29kaW5nL2Nzdi5wYXJzZUZpZWxkICgpIChoYXZlRmllbGQgPHR5cGUgLTE1PiwgZGVsaW0gPHR5cGUgLTIxPiwgZXJyIDx0eXBlIC0xOT4pOwo+PjsKZnVuYyBOZXdXcml0ZXIgKHcgPHR5cGUgMTI+KSA8dHlwZSAzOSAqPHR5cGUgNDAgIldyaXRlciIgPHR5cGUgNDEgc3RydWN0IHsgQ29tbWEgPHR5cGUgLTIxPjsgVXNlQ1JMRiA8dHlwZSAtMTU+OyAuZW5jb2RpbmcvY3N2LncgPHR5cGUgNDIgKjx0eXBlIDQzICJidWZpby5Xcml0ZXIiIDx0eXBlIDQ0IHN0cnVjdCB7IC5idWZpby5lcnIgPHR5cGUgLTE5PjsgLmJ1ZmlvLmJ1ZiA8dHlwZSA0NSBbXSA8dHlwZSAtMjA+PjsgLmJ1ZmlvLm4gPHR5cGUgLTExPjsgLmJ1ZmlvLndyIDx0eXBlIDEyPjsgfT4KIGZ1bmMgKGIgPHR5cGUgNDYgKjx0eXBlIDQzPj4pIFJlYWRGcm9tIChyIDx0eXBlIDE+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNDY+KSBXcml0ZVN0cmluZyAocyA8dHlwZSAtMTY+KSAoPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSA0Nj4pIFdyaXRlUnVuZSAociA8dHlwZSAtMjE+KSAoc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDQ2PikgV3JpdGVCeXRlIChjIDx0eXBlIC0yMD4pIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDQ2PikgV3JpdGUgKHAgPHR5cGUgNDcgW10gPHR5cGUgLTIwPj4pIChubiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDQ2PikgRmx1c2ggKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgNDY+KSBBdmFpbGFibGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgNDY+KSAuYnVmaW8uZmx1c2ggKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgNDY+KSBCdWZmZXJlZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSA0Nj4pIFJlc2V0ICh3IDx0eXBlIDEyPik7Cj4+OyB9PgogZnVuYyAodyA8dHlwZSA0OCAqPHR5cGUgNDA+PikgV3JpdGUgKHJlY29yZCA8dHlwZSA0OSBbXSA8dHlwZSAtMTY+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHcgPHR5cGUgNDg+KSBGbHVzaCAoKTsKIGZ1bmMgKHcgPHR5cGUgNDg+KSBFcnJvciAoKSA8dHlwZSAtMTk+OwogZnVuYyAodyA8dHlwZSA0OD4pIFdyaXRlQWxsIChyZWNvcmRzIDx0eXBlIDUwIFtdIDx0eXBlIDUxIFtdIDx0eXBlIC0xNj4+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHcgPHR5cGUgNDg+KSAuZW5jb2RpbmcvY3N2LmZpZWxkTmVlZHNRdW90ZXMgKGZpZWxkIDx0eXBlIC0xNj4pIDx0eXBlIC0xNT47Cj4+Owp0eXBlIDx0eXBlIDUyICJQYXJzZUVycm9yIiA8dHlwZSA1MyBzdHJ1Y3QgeyBMaW5lIDx0eXBlIC0xMT47IENvbHVtbiA8dHlwZSAtMTE+OyBFcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKGUgPHR5cGUgNTQgKjx0eXBlIDUyPj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgNT47CnR5cGUgPHR5cGUgNDA+OwpjaGVja3N1bSA3NzI1NDI0RDdDRjBFM0I3NEU5ODE3RDA5NTY1QTNBRUJGMkEyMEJFOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAACcZAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAFsZAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAACEGQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAApBkAAAEAAAAAAAAAAAAAAAEAAAAAAAAA