f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAACYLwAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGltYWdlOwpwa2dwYXRoIGltYWdlOwpwcmlvcml0eSA2OwppbXBvcnQgYnVmaW8gYnVmaW8gImJ1ZmlvIjsKaW1wb3J0IGVycm9ycyBlcnJvcnMgImVycm9ycyI7CmltcG9ydCBjb2xvciBpbWFnZS9jb2xvciAiaW1hZ2UvY29sb3IiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IHN0cmNvbnYgc3RyY29udiAic3RyY29udiI7CmluaXQgaW1hZ2UgaW1hZ2UuLmltcG9ydCA2IGNvbG9yIGltYWdlX2NvbG9yLi5pbXBvcnQgMSBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCBidWZpbyBidWZpby4uaW1wb3J0IDU7CnR5cGUgPHR5cGUgMSAiQWxwaGEiIDx0eXBlIDIgc3RydWN0IHsgUGl4IDx0eXBlIDMgW10gPHR5cGUgLTU+PjsgU3RyaWRlIDx0eXBlIC0xMT47IFJlY3QgPHR5cGUgNCAiUmVjdGFuZ2xlIiA8dHlwZSA1IHN0cnVjdCB7IE1pbiA8dHlwZSA2ICJQb2ludCIgPHR5cGUgNyBzdHJ1Y3QgeyBYIDx0eXBlIC0xMT47IFkgPHR5cGUgLTExPjsgfT4KIGZ1bmMgKHAgPHR5cGUgNj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAocCA8dHlwZSA2PikgQWRkIChxIDx0eXBlIDY+KSA8dHlwZSA2PjsKIGZ1bmMgKHAgPHR5cGUgNj4pIFN1YiAocSA8dHlwZSA2PikgPHR5cGUgNj47CiBmdW5jIChwIDx0eXBlIDY+KSBNdWwgKGsgPHR5cGUgLTExPikgPHR5cGUgNj47CiBmdW5jIChwIDx0eXBlIDY+KSBEaXYgKGsgPHR5cGUgLTExPikgPHR5cGUgNj47CiBmdW5jIChwIDx0eXBlIDY+KSBJbiAociA8dHlwZSA0PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHAgPHR5cGUgNj4pIE1vZCAociA8dHlwZSA0PikgPHR5cGUgNj47CiBmdW5jIChwIDx0eXBlIDY+KSBFcSAocSA8dHlwZSA2PikgPHR5cGUgLTE1PjsKPjsgTWF4IDx0eXBlIDY+OyB9PgogZnVuYyAociA8dHlwZSA0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChyIDx0eXBlIDQ+KSBEeCAoKSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSA0PikgRHkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgND4pIFNpemUgKCkgPHR5cGUgNj47CiBmdW5jIChyIDx0eXBlIDQ+KSBBZGQgKHAgPHR5cGUgNj4pIDx0eXBlIDQ+OwogZnVuYyAociA8dHlwZSA0PikgU3ViIChwIDx0eXBlIDY+KSA8dHlwZSA0PjsKIGZ1bmMgKHIgPHR5cGUgND4pIEluc2V0IChuIDx0eXBlIC0xMT4pIDx0eXBlIDQ+OwogZnVuYyAociA8dHlwZSA0PikgSW50ZXJzZWN0IChzIDx0eXBlIDQ+KSA8dHlwZSA0PjsKIGZ1bmMgKHIgPHR5cGUgND4pIFVuaW9uIChzIDx0eXBlIDQ+KSA8dHlwZSA0PjsKIGZ1bmMgKHIgPHR5cGUgND4pIEVtcHR5ICgpIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDQ+KSBFcSAocyA8dHlwZSA0PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgND4pIE92ZXJsYXBzIChzIDx0eXBlIDQ+KSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSA0PikgSW4gKHMgPHR5cGUgND4pIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDQ+KSBDYW5vbiAoKSA8dHlwZSA0PjsKPjsgfT4KIGZ1bmMgKHAgPHR5cGUgOCAqPHR5cGUgMT4+KSBDb2xvck1vZGVsICgpIDx0eXBlIDkgImltYWdlL2NvbG9yLk1vZGVsIiA8dHlwZSAxMCBpbnRlcmZhY2UgeyBDb252ZXJ0IChjIDx0eXBlIDExICJpbWFnZS9jb2xvci5Db2xvciIgPHR5cGUgMTIgaW50ZXJmYWNlIHsgUkdCQSAoKSAociA8dHlwZSAtNz4sIGcgPHR5cGUgLTc+LCBiIDx0eXBlIC03PiwgYSA8dHlwZSAtNz4pOyB9Pj4pIDx0eXBlIDExPjsgfT4+OwogZnVuYyAocCA8dHlwZSA4PikgQm91bmRzICgpIDx0eXBlIDQ+OwogZnVuYyAocCA8dHlwZSA4PikgQXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAxMT47CiBmdW5jIChwIDx0eXBlIDg+KSBBbHBoYUF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgMTMgImltYWdlL2NvbG9yLkFscGhhIiA8dHlwZSAxNCBzdHJ1Y3QgeyBBIDx0eXBlIC01PjsgfT4KIGZ1bmMgKGMgPHR5cGUgMTM+KSBSR0JBICgpIChyIDx0eXBlIC03PiwgZyA8dHlwZSAtNz4sIGIgPHR5cGUgLTc+LCBhIDx0eXBlIC03Pik7Cj47CiBmdW5jIChwIDx0eXBlIDg+KSBQaXhPZmZzZXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAocCA8dHlwZSA4PikgU2V0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPiwgYyA8dHlwZSAxMT4pOwogZnVuYyAocCA8dHlwZSA4PikgU2V0QWxwaGEgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+LCBjIDx0eXBlIDEzPik7CiBmdW5jIChwIDx0eXBlIDg+KSBTdWJJbWFnZSAociA8dHlwZSA0PikgPHR5cGUgMTUgIkltYWdlIiA8dHlwZSAxNiBpbnRlcmZhY2UgeyBDb2xvck1vZGVsICgpIDx0eXBlIDk+OyBCb3VuZHMgKCkgPHR5cGUgND47IEF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgMTE+OyB9Pj47CiBmdW5jIChwIDx0eXBlIDg+KSBPcGFxdWUgKCkgPHR5cGUgLTE1PjsKPjsKdHlwZSA8dHlwZSAxNyAiQWxwaGExNiIgPHR5cGUgMTggc3RydWN0IHsgUGl4IDx0eXBlIDE5IFtdIDx0eXBlIC01Pj47IFN0cmlkZSA8dHlwZSAtMTE+OyBSZWN0IDx0eXBlIDQ+OyB9PgogZnVuYyAocCA8dHlwZSAyMCAqPHR5cGUgMTc+PikgQ29sb3JNb2RlbCAoKSA8dHlwZSA5PjsKIGZ1bmMgKHAgPHR5cGUgMjA+KSBCb3VuZHMgKCkgPHR5cGUgND47CiBmdW5jIChwIDx0eXBlIDIwPikgQXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAxMT47CiBmdW5jIChwIDx0eXBlIDIwPikgQWxwaGExNkF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgMjEgImltYWdlL2NvbG9yLkFscGhhMTYiIDx0eXBlIDIyIHN0cnVjdCB7IEEgPHR5cGUgLTY+OyB9PgogZnVuYyAoYyA8dHlwZSAyMT4pIFJHQkEgKCkgKHIgPHR5cGUgLTc+LCBnIDx0eXBlIC03PiwgYiA8dHlwZSAtNz4sIGEgPHR5cGUgLTc+KTsKPjsKIGZ1bmMgKHAgPHR5cGUgMjA+KSBQaXhPZmZzZXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAocCA8dHlwZSAyMD4pIFNldCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4sIGMgPHR5cGUgMTE+KTsKIGZ1bmMgKHAgPHR5cGUgMjA+KSBTZXRBbHBoYTE2ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPiwgYyA8dHlwZSAyMT4pOwogZnVuYyAocCA8dHlwZSAyMD4pIFN1YkltYWdlIChyIDx0eXBlIDQ+KSA8dHlwZSAxNT47CiBmdW5jIChwIDx0eXBlIDIwPikgT3BhcXVlICgpIDx0eXBlIC0xNT47Cj47CnZhciBCbGFjayA8dHlwZSAyMyAqPHR5cGUgMjQgIlVuaWZvcm0iIDx0eXBlIDI1IHN0cnVjdCB7IEMgPHR5cGUgMTE+OyB9PgogZnVuYyAoYyA8dHlwZSAyNiAqPHR5cGUgMjQ+PikgUkdCQSAoKSAociA8dHlwZSAtNz4sIGcgPHR5cGUgLTc+LCBiIDx0eXBlIC03PiwgYSA8dHlwZSAtNz4pOwogZnVuYyAoYyA8dHlwZSAyNj4pIENvbG9yTW9kZWwgKCkgPHR5cGUgOT47CiBmdW5jIChjIDx0eXBlIDI2PikgQ29udmVydCAoPyA8dHlwZSAxMT4pIDx0eXBlIDExPjsKIGZ1bmMgKGMgPHR5cGUgMjY+KSBCb3VuZHMgKCkgPHR5cGUgND47CiBmdW5jIChjIDx0eXBlIDI2PikgQXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAxMT47CiBmdW5jIChjIDx0eXBlIDI2PikgT3BhcXVlICgpIDx0eXBlIC0xNT47Cj4+Owp0eXBlIDx0eXBlIDI3ICJDb25maWciIDx0eXBlIDI4IHN0cnVjdCB7IENvbG9yTW9kZWwgPHR5cGUgOT47IFdpZHRoIDx0eXBlIC0xMT47IEhlaWdodCA8dHlwZSAtMTE+OyB9Pj47CmZ1bmMgRGVjb2RlIChyIDx0eXBlIDI5ICJpby5SZWFkZXIiIDx0eXBlIDMwIGludGVyZmFjZSB7IFJlYWQgKHAgPHR5cGUgMzEgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSAoPyA8dHlwZSAxNT4sID8gPHR5cGUgLTE2PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBEZWNvZGVDb25maWcgKHIgPHR5cGUgMjk+KSAoPyA8dHlwZSAyNz4sID8gPHR5cGUgLTE2PiwgPyA8dHlwZSAtMTk+KTsKdmFyIEVyckZvcm1hdCA8dHlwZSAtMTk+Owp0eXBlIDx0eXBlIDMyICJHcmF5IiA8dHlwZSAzMyBzdHJ1Y3QgeyBQaXggPHR5cGUgMzQgW10gPHR5cGUgLTU+PjsgU3RyaWRlIDx0eXBlIC0xMT47IFJlY3QgPHR5cGUgND47IH0+CiBmdW5jIChwIDx0eXBlIDM1ICo8dHlwZSAzMj4+KSBDb2xvck1vZGVsICgpIDx0eXBlIDk+OwogZnVuYyAocCA8dHlwZSAzNT4pIEJvdW5kcyAoKSA8dHlwZSA0PjsKIGZ1bmMgKHAgPHR5cGUgMzU+KSBBdCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIDExPjsKIGZ1bmMgKHAgPHR5cGUgMzU+KSBHcmF5QXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAzNiAiaW1hZ2UvY29sb3IuR3JheSIgPHR5cGUgMzcgc3RydWN0IHsgWSA8dHlwZSAtNT47IH0+CiBmdW5jIChjIDx0eXBlIDM2PikgUkdCQSAoKSAociA8dHlwZSAtNz4sIGcgPHR5cGUgLTc+LCBiIDx0eXBlIC03PiwgYSA8dHlwZSAtNz4pOwo+OwogZnVuYyAocCA8dHlwZSAzNT4pIFBpeE9mZnNldCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChwIDx0eXBlIDM1PikgU2V0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPiwgYyA8dHlwZSAxMT4pOwogZnVuYyAocCA8dHlwZSAzNT4pIFNldEdyYXkgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+LCBjIDx0eXBlIDM2Pik7CiBmdW5jIChwIDx0eXBlIDM1PikgU3ViSW1hZ2UgKHIgPHR5cGUgND4pIDx0eXBlIDE1PjsKIGZ1bmMgKHAgPHR5cGUgMzU+KSBPcGFxdWUgKCkgPHR5cGUgLTE1PjsKPjsKdHlwZSA8dHlwZSAzOCAiR3JheTE2IiA8dHlwZSAzOSBzdHJ1Y3QgeyBQaXggPHR5cGUgNDAgW10gPHR5cGUgLTU+PjsgU3RyaWRlIDx0eXBlIC0xMT47IFJlY3QgPHR5cGUgND47IH0+CiBmdW5jIChwIDx0eXBlIDQxICo8dHlwZSAzOD4+KSBDb2xvck1vZGVsICgpIDx0eXBlIDk+OwogZnVuYyAocCA8dHlwZSA0MT4pIEJvdW5kcyAoKSA8dHlwZSA0PjsKIGZ1bmMgKHAgPHR5cGUgNDE+KSBBdCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIDExPjsKIGZ1bmMgKHAgPHR5cGUgNDE+KSBHcmF5MTZBdCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIDQyICJpbWFnZS9jb2xvci5HcmF5MTYiIDx0eXBlIDQzIHN0cnVjdCB7IFkgPHR5cGUgLTY+OyB9PgogZnVuYyAoYyA8dHlwZSA0Mj4pIFJHQkEgKCkgKHIgPHR5cGUgLTc+LCBnIDx0eXBlIC03PiwgYiA8dHlwZSAtNz4sIGEgPHR5cGUgLTc+KTsKPjsKIGZ1bmMgKHAgPHR5cGUgNDE+KSBQaXhPZmZzZXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAocCA8dHlwZSA0MT4pIFNldCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4sIGMgPHR5cGUgMTE+KTsKIGZ1bmMgKHAgPHR5cGUgNDE+KSBTZXRHcmF5MTYgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+LCBjIDx0eXBlIDQyPik7CiBmdW5jIChwIDx0eXBlIDQxPikgU3ViSW1hZ2UgKHIgPHR5cGUgND4pIDx0eXBlIDE1PjsKIGZ1bmMgKHAgPHR5cGUgNDE+KSBPcGFxdWUgKCkgPHR5cGUgLTE1PjsKPjsKdHlwZSA8dHlwZSAxNT47CnR5cGUgPHR5cGUgNDQgIk5SR0JBIiA8dHlwZSA0NSBzdHJ1Y3QgeyBQaXggPHR5cGUgNDYgW10gPHR5cGUgLTU+PjsgU3RyaWRlIDx0eXBlIC0xMT47IFJlY3QgPHR5cGUgND47IH0+CiBmdW5jIChwIDx0eXBlIDQ3ICo8dHlwZSA0ND4+KSBDb2xvck1vZGVsICgpIDx0eXBlIDk+OwogZnVuYyAocCA8dHlwZSA0Nz4pIEJvdW5kcyAoKSA8dHlwZSA0PjsKIGZ1bmMgKHAgPHR5cGUgNDc+KSBBdCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIDExPjsKIGZ1bmMgKHAgPHR5cGUgNDc+KSBOUkdCQUF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgNDggImltYWdlL2NvbG9yLk5SR0JBIiA8dHlwZSA0OSBzdHJ1Y3QgeyBSIDx0eXBlIC01PjsgRyA8dHlwZSAtNT47IEIgPHR5cGUgLTU+OyBBIDx0eXBlIC01PjsgfT4KIGZ1bmMgKGMgPHR5cGUgNDg+KSBSR0JBICgpIChyIDx0eXBlIC03PiwgZyA8dHlwZSAtNz4sIGIgPHR5cGUgLTc+LCBhIDx0eXBlIC03Pik7Cj47CiBmdW5jIChwIDx0eXBlIDQ3PikgUGl4T2Zmc2V0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKHAgPHR5cGUgNDc+KSBTZXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+LCBjIDx0eXBlIDExPik7CiBmdW5jIChwIDx0eXBlIDQ3PikgU2V0TlJHQkEgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+LCBjIDx0eXBlIDQ4Pik7CiBmdW5jIChwIDx0eXBlIDQ3PikgU3ViSW1hZ2UgKHIgPHR5cGUgND4pIDx0eXBlIDE1PjsKIGZ1bmMgKHAgPHR5cGUgNDc+KSBPcGFxdWUgKCkgPHR5cGUgLTE1PjsKPjsKdHlwZSA8dHlwZSA1MCAiTlJHQkE2NCIgPHR5cGUgNTEgc3RydWN0IHsgUGl4IDx0eXBlIDUyIFtdIDx0eXBlIC01Pj47IFN0cmlkZSA8dHlwZSAtMTE+OyBSZWN0IDx0eXBlIDQ+OyB9PgogZnVuYyAocCA8dHlwZSA1MyAqPHR5cGUgNTA+PikgQ29sb3JNb2RlbCAoKSA8dHlwZSA5PjsKIGZ1bmMgKHAgPHR5cGUgNTM+KSBCb3VuZHMgKCkgPHR5cGUgND47CiBmdW5jIChwIDx0eXBlIDUzPikgQXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAxMT47CiBmdW5jIChwIDx0eXBlIDUzPikgTlJHQkE2NEF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgNTQgImltYWdlL2NvbG9yLk5SR0JBNjQiIDx0eXBlIDU1IHN0cnVjdCB7IFIgPHR5cGUgLTY+OyBHIDx0eXBlIC02PjsgQiA8dHlwZSAtNj47IEEgPHR5cGUgLTY+OyB9PgogZnVuYyAoYyA8dHlwZSA1ND4pIFJHQkEgKCkgKHIgPHR5cGUgLTc+LCBnIDx0eXBlIC03PiwgYiA8dHlwZSAtNz4sIGEgPHR5cGUgLTc+KTsKPjsKIGZ1bmMgKHAgPHR5cGUgNTM+KSBQaXhPZmZzZXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAocCA8dHlwZSA1Mz4pIFNldCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4sIGMgPHR5cGUgMTE+KTsKIGZ1bmMgKHAgPHR5cGUgNTM+KSBTZXROUkdCQTY0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPiwgYyA8dHlwZSA1ND4pOwogZnVuYyAocCA8dHlwZSA1Mz4pIFN1YkltYWdlIChyIDx0eXBlIDQ+KSA8dHlwZSAxNT47CiBmdW5jIChwIDx0eXBlIDUzPikgT3BhcXVlICgpIDx0eXBlIC0xNT47Cj47CmZ1bmMgTmV3QWxwaGEgKHIgPHR5cGUgND4pIDx0eXBlIDg+OwpmdW5jIE5ld0FscGhhMTYgKHIgPHR5cGUgND4pIDx0eXBlIDIwPjsKZnVuYyBOZXdHcmF5IChyIDx0eXBlIDQ+KSA8dHlwZSAzNT47CmZ1bmMgTmV3R3JheTE2IChyIDx0eXBlIDQ+KSA8dHlwZSA0MT47CmZ1bmMgTmV3TlJHQkEgKHIgPHR5cGUgND4pIDx0eXBlIDQ3PjsKZnVuYyBOZXdOUkdCQTY0IChyIDx0eXBlIDQ+KSA8dHlwZSA1Mz47CmZ1bmMgTmV3UGFsZXR0ZWQgKHIgPHR5cGUgND4sIHAgPHR5cGUgNTYgImltYWdlL2NvbG9yLlBhbGV0dGUiIDx0eXBlIDU3IFtdIDx0eXBlIDExPj4KIGZ1bmMgKHAgPHR5cGUgNTY+KSBJbmRleCAoYyA8dHlwZSAxMT4pIDx0eXBlIC0xMT47CiBmdW5jIChwIDx0eXBlIDU2PikgQ29udmVydCAoYyA8dHlwZSAxMT4pIDx0eXBlIDExPjsKPikgPHR5cGUgNTggKjx0eXBlIDU5ICJQYWxldHRlZCIgPHR5cGUgNjAgc3RydWN0IHsgUGl4IDx0eXBlIDYxIFtdIDx0eXBlIC01Pj47IFN0cmlkZSA8dHlwZSAtMTE+OyBSZWN0IDx0eXBlIDQ+OyBQYWxldHRlIDx0eXBlIDU2PjsgfT4KIGZ1bmMgKHAgPHR5cGUgNjIgKjx0eXBlIDU5Pj4pIENvbG9yTW9kZWwgKCkgPHR5cGUgOT47CiBmdW5jIChwIDx0eXBlIDYyPikgQm91bmRzICgpIDx0eXBlIDQ+OwogZnVuYyAocCA8dHlwZSA2Mj4pIEF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgMTE+OwogZnVuYyAocCA8dHlwZSA2Mj4pIFBpeE9mZnNldCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChwIDx0eXBlIDYyPikgU2V0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPiwgYyA8dHlwZSAxMT4pOwogZnVuYyAocCA8dHlwZSA2Mj4pIENvbG9ySW5kZXhBdCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIC01PjsKIGZ1bmMgKHAgPHR5cGUgNjI+KSBTZXRDb2xvckluZGV4ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPiwgaW5kZXggPHR5cGUgLTU+KTsKIGZ1bmMgKHAgPHR5cGUgNjI+KSBTdWJJbWFnZSAociA8dHlwZSA0PikgPHR5cGUgMTU+OwogZnVuYyAocCA8dHlwZSA2Mj4pIE9wYXF1ZSAoKSA8dHlwZSAtMTU+Owo+PjsKZnVuYyBOZXdSR0JBIChyIDx0eXBlIDQ+KSA8dHlwZSA2MyAqPHR5cGUgNjQgIlJHQkEiIDx0eXBlIDY1IHN0cnVjdCB7IFBpeCA8dHlwZSA2NiBbXSA8dHlwZSAtNT4+OyBTdHJpZGUgPHR5cGUgLTExPjsgUmVjdCA8dHlwZSA0PjsgfT4KIGZ1bmMgKHAgPHR5cGUgNjcgKjx0eXBlIDY0Pj4pIENvbG9yTW9kZWwgKCkgPHR5cGUgOT47CiBmdW5jIChwIDx0eXBlIDY3PikgQm91bmRzICgpIDx0eXBlIDQ+OwogZnVuYyAocCA8dHlwZSA2Nz4pIEF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgMTE+OwogZnVuYyAocCA8dHlwZSA2Nz4pIFJHQkFBdCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIDY4ICJpbWFnZS9jb2xvci5SR0JBIiA8dHlwZSA2OSBzdHJ1Y3QgeyBSIDx0eXBlIC01PjsgRyA8dHlwZSAtNT47IEIgPHR5cGUgLTU+OyBBIDx0eXBlIC01PjsgfT4KIGZ1bmMgKGMgPHR5cGUgNjg+KSBSR0JBICgpIChyIDx0eXBlIC03PiwgZyA8dHlwZSAtNz4sIGIgPHR5cGUgLTc+LCBhIDx0eXBlIC03Pik7Cj47CiBmdW5jIChwIDx0eXBlIDY3PikgUGl4T2Zmc2V0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKHAgPHR5cGUgNjc+KSBTZXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+LCBjIDx0eXBlIDExPik7CiBmdW5jIChwIDx0eXBlIDY3PikgU2V0UkdCQSAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4sIGMgPHR5cGUgNjg+KTsKIGZ1bmMgKHAgPHR5cGUgNjc+KSBTdWJJbWFnZSAociA8dHlwZSA0PikgPHR5cGUgMTU+OwogZnVuYyAocCA8dHlwZSA2Nz4pIE9wYXF1ZSAoKSA8dHlwZSAtMTU+Owo+PjsKZnVuYyBOZXdSR0JBNjQgKHIgPHR5cGUgND4pIDx0eXBlIDcwICo8dHlwZSA3MSAiUkdCQTY0IiA8dHlwZSA3MiBzdHJ1Y3QgeyBQaXggPHR5cGUgNzMgW10gPHR5cGUgLTU+PjsgU3RyaWRlIDx0eXBlIC0xMT47IFJlY3QgPHR5cGUgND47IH0+CiBmdW5jIChwIDx0eXBlIDc0ICo8dHlwZSA3MT4+KSBDb2xvck1vZGVsICgpIDx0eXBlIDk+OwogZnVuYyAocCA8dHlwZSA3ND4pIEJvdW5kcyAoKSA8dHlwZSA0PjsKIGZ1bmMgKHAgPHR5cGUgNzQ+KSBBdCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIDExPjsKIGZ1bmMgKHAgPHR5cGUgNzQ+KSBSR0JBNjRBdCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIDc1ICJpbWFnZS9jb2xvci5SR0JBNjQiIDx0eXBlIDc2IHN0cnVjdCB7IFIgPHR5cGUgLTY+OyBHIDx0eXBlIC02PjsgQiA8dHlwZSAtNj47IEEgPHR5cGUgLTY+OyB9PgogZnVuYyAoYyA8dHlwZSA3NT4pIFJHQkEgKCkgKHIgPHR5cGUgLTc+LCBnIDx0eXBlIC03PiwgYiA8dHlwZSAtNz4sIGEgPHR5cGUgLTc+KTsKPjsKIGZ1bmMgKHAgPHR5cGUgNzQ+KSBQaXhPZmZzZXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAocCA8dHlwZSA3ND4pIFNldCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4sIGMgPHR5cGUgMTE+KTsKIGZ1bmMgKHAgPHR5cGUgNzQ+KSBTZXRSR0JBNjQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+LCBjIDx0eXBlIDc1Pik7CiBmdW5jIChwIDx0eXBlIDc0PikgU3ViSW1hZ2UgKHIgPHR5cGUgND4pIDx0eXBlIDE1PjsKIGZ1bmMgKHAgPHR5cGUgNzQ+KSBPcGFxdWUgKCkgPHR5cGUgLTE1PjsKPj47CmZ1bmMgTmV3VW5pZm9ybSAoYyA8dHlwZSAxMT4pIDx0eXBlIDIzPjsKZnVuYyBOZXdZQ2JDciAociA8dHlwZSA0Piwgc3Vic2FtcGxlUmF0aW8gPHR5cGUgNzcgIllDYkNyU3Vic2FtcGxlUmF0aW8iIDx0eXBlIC0xMT4KIGZ1bmMgKHMgPHR5cGUgNzc+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPikgPHR5cGUgNzggKjx0eXBlIDc5ICJZQ2JDciIgPHR5cGUgODAgc3RydWN0IHsgWSA8dHlwZSA4MSBbXSA8dHlwZSAtNT4+OyBDYiA8dHlwZSA4MT47IENyIDx0eXBlIDgxPjsgWVN0cmlkZSA8dHlwZSAtMTE+OyBDU3RyaWRlIDx0eXBlIC0xMT47IFN1YnNhbXBsZVJhdGlvIDx0eXBlIDc3PjsgUmVjdCA8dHlwZSA0PjsgfT4KIGZ1bmMgKHAgPHR5cGUgODIgKjx0eXBlIDc5Pj4pIENvbG9yTW9kZWwgKCkgPHR5cGUgOT47CiBmdW5jIChwIDx0eXBlIDgyPikgQm91bmRzICgpIDx0eXBlIDQ+OwogZnVuYyAocCA8dHlwZSA4Mj4pIEF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgMTE+OwogZnVuYyAocCA8dHlwZSA4Mj4pIFlDYkNyQXQgKHggPHR5cGUgLTExPiwgeSA8dHlwZSAtMTE+KSA8dHlwZSA4MyAiaW1hZ2UvY29sb3IuWUNiQ3IiIDx0eXBlIDg0IHN0cnVjdCB7IFkgPHR5cGUgLTU+OyBDYiA8dHlwZSAtNT47IENyIDx0eXBlIC01PjsgfT4KIGZ1bmMgKGMgPHR5cGUgODM+KSBSR0JBICgpICg/IDx0eXBlIC03PiwgPyA8dHlwZSAtNz4sID8gPHR5cGUgLTc+LCA/IDx0eXBlIC03Pik7Cj47CiBmdW5jIChwIDx0eXBlIDgyPikgWU9mZnNldCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChwIDx0eXBlIDgyPikgQ09mZnNldCAoeCA8dHlwZSAtMTE+LCB5IDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChwIDx0eXBlIDgyPikgU3ViSW1hZ2UgKHIgPHR5cGUgND4pIDx0eXBlIDE1PjsKIGZ1bmMgKHAgPHR5cGUgODI+KSBPcGFxdWUgKCkgPHR5cGUgLTE1PjsKPj47CnZhciBPcGFxdWUgPHR5cGUgMjM+Owp0eXBlIDx0eXBlIDU5PjsKdHlwZSA8dHlwZSA4NSAiUGFsZXR0ZWRJbWFnZSIgPHR5cGUgODYgaW50ZXJmYWNlIHsgQ29sb3JJbmRleEF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgLTU+OyA/IDx0eXBlIDE1PjsgfT4+Owp0eXBlIDx0eXBlIDY+OwpmdW5jIFB0IChYIDx0eXBlIC0xMT4sIFkgPHR5cGUgLTExPikgPHR5cGUgNj47CnR5cGUgPHR5cGUgNjQ+Owp0eXBlIDx0eXBlIDcxPjsKZnVuYyBSZWN0ICh4MCA8dHlwZSAtMTE+LCB5MCA8dHlwZSAtMTE+LCB4MSA8dHlwZSAtMTE+LCB5MSA8dHlwZSAtMTE+KSA8dHlwZSA0PjsKdHlwZSA8dHlwZSA0PjsKZnVuYyBSZWdpc3RlckZvcm1hdCAobmFtZSA8dHlwZSAtMTY+LCBtYWdpYyA8dHlwZSAtMTY+LCBkZWNvZGUgPHR5cGUgODcgKD8gPHR5cGUgMjk+KSAoPyA8dHlwZSAxNT4sID8gPHR5cGUgLTE5Pik+LCBkZWNvZGVDb25maWcgPHR5cGUgODggKD8gPHR5cGUgMjk+KSAoPyA8dHlwZSAyNz4sID8gPHR5cGUgLTE5Pik+KTsKdmFyIFRyYW5zcGFyZW50IDx0eXBlIDIzPjsKdHlwZSA8dHlwZSAyND47CnZhciBXaGl0ZSA8dHlwZSAyMz47CnR5cGUgPHR5cGUgNzk+Owp0eXBlIDx0eXBlIDc3PjsKY29uc3QgWUNiQ3JTdWJzYW1wbGVSYXRpbzQyMCA8dHlwZSA3Nz4gPSAyIDsKY29uc3QgWUNiQ3JTdWJzYW1wbGVSYXRpbzQyMiA8dHlwZSA3Nz4gPSAxIDsKY29uc3QgWUNiQ3JTdWJzYW1wbGVSYXRpbzQ0MCA8dHlwZSA3Nz4gPSAzIDsKY29uc3QgWUNiQ3JTdWJzYW1wbGVSYXRpbzQ0NCA8dHlwZSA3Nz4gPSAwIDsKdmFyIFpQIDx0eXBlIDY+Owp2YXIgWlIgPHR5cGUgND47CmNoZWNrc3VtIDZFQjAzNjRBMkQyOTg4MkU4REVDQzdFNzM3MDYyNTMzNTk4RUUzOUI7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAABkvAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAE0vAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAB0LwAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAlC8AAAEAAAAAAAAAAAAAAAEAAAAAAAAA