f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAMKQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHJlZ2V4cDsKcGtncGF0aCByZWdleHA7CnByaW9yaXR5IDY7CmltcG9ydCBieXRlcyBieXRlcyAiYnl0ZXMiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IHN5bnRheCByZWdleHAvc3ludGF4ICJyZWdleHAvc3ludGF4IjsKaW1wb3J0IHNvcnQgc29ydCAic29ydCI7CmltcG9ydCBzdHJjb252IHN0cmNvbnYgInN0cmNvbnYiOwppbXBvcnQgc3RyaW5ncyBzdHJpbmdzICJzdHJpbmdzIjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCB1bmljb2RlIHVuaWNvZGUgInVuaWNvZGUiOwppbXBvcnQgdXRmOCB1bmljb2RlL3V0ZjggInVuaWNvZGUvdXRmOCI7CmluaXQgcmVnZXhwIHJlZ2V4cC4uaW1wb3J0IDYgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyBieXRlcyBieXRlcy4uaW1wb3J0IDQgc3ludGF4IHJlZ2V4cF9zeW50YXguLmltcG9ydCA1OwpmdW5jIENvbXBpbGUgKGV4cHIgPHR5cGUgLTE2PikgKD8gPHR5cGUgMSAqPHR5cGUgMiAiUmVnZXhwIiA8dHlwZSAzIHN0cnVjdCB7IC5yZWdleHAuZXhwciA8dHlwZSAtMTY+OyAucmVnZXhwLnByb2cgPHR5cGUgNCAqPHR5cGUgNSAicmVnZXhwL3N5bnRheC5Qcm9nIiA8dHlwZSA2IHN0cnVjdCB7IEluc3QgPHR5cGUgNyBbXSA8dHlwZSA4ICJyZWdleHAvc3ludGF4Lkluc3QiIDx0eXBlIDkgc3RydWN0IHsgT3AgPHR5cGUgMTAgInJlZ2V4cC9zeW50YXguSW5zdE9wIiA8dHlwZSAtNT4KIGZ1bmMgKGkgPHR5cGUgMTA+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgT3V0IDx0eXBlIC03PjsgQXJnIDx0eXBlIC03PjsgUnVuZSA8dHlwZSAxMSBbXSA8dHlwZSAtMjE+PjsgfT4KIGZ1bmMgKGkgPHR5cGUgMTIgKjx0eXBlIDg+PikgLnJlZ2V4cC9zeW50YXgub3AgKCkgPHR5cGUgMTA+OwogZnVuYyAoaSA8dHlwZSAxMj4pIE1hdGNoUnVuZSAociA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+OwogZnVuYyAoaSA8dHlwZSAxMj4pIE1hdGNoUnVuZVBvcyAociA8dHlwZSAtMjE+KSA8dHlwZSAtMTE+OwogZnVuYyAoaSA8dHlwZSAxMj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoaSA8dHlwZSAxMj4pIE1hdGNoRW1wdHlXaWR0aCAoYmVmb3JlIDx0eXBlIC0yMT4sIGFmdGVyIDx0eXBlIC0yMT4pIDx0eXBlIC0xNT47Cj4+OyBTdGFydCA8dHlwZSAtMTE+OyBOdW1DYXAgPHR5cGUgLTExPjsgfT4KIGZ1bmMgKHAgPHR5cGUgMTMgKjx0eXBlIDU+PikgLnJlZ2V4cC9zeW50YXguc2tpcE5vcCAocGMgPHR5cGUgLTc+KSAoPyA8dHlwZSAxMj4sID8gPHR5cGUgLTc+KTsKIGZ1bmMgKHAgPHR5cGUgMTM+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHAgPHR5cGUgMTM+KSBTdGFydENvbmQgKCkgPHR5cGUgMTQgInJlZ2V4cC9zeW50YXguRW1wdHlPcCIgPHR5cGUgLTU+PjsKIGZ1bmMgKHAgPHR5cGUgMTM+KSBQcmVmaXggKCkgKHByZWZpeCA8dHlwZSAtMTY+LCBjb21wbGV0ZSA8dHlwZSAtMTU+KTsKPj47IC5yZWdleHAub25lcGFzcyA8dHlwZSAxNSAqPHR5cGUgMTYgIi5yZWdleHAub25lUGFzc1Byb2ciIDx0eXBlIDE3IHN0cnVjdCB7IEluc3QgPHR5cGUgMTggW10gPHR5cGUgMTkgIi5yZWdleHAub25lUGFzc0luc3QiIDx0eXBlIDIwIHN0cnVjdCB7ID8gPHR5cGUgOD47IE5leHQgPHR5cGUgMjEgW10gPHR5cGUgLTc+PjsgfT4+PjsgU3RhcnQgPHR5cGUgLTExPjsgTnVtQ2FwIDx0eXBlIC0xMT47IH0+Pj47IC5yZWdleHAucHJlZml4IDx0eXBlIC0xNj47IC5yZWdleHAucHJlZml4Qnl0ZXMgPHR5cGUgMjIgW10gPHR5cGUgLTIwPj47IC5yZWdleHAucHJlZml4Q29tcGxldGUgPHR5cGUgLTE1PjsgLnJlZ2V4cC5wcmVmaXhSdW5lIDx0eXBlIC0yMT47IC5yZWdleHAucHJlZml4RW5kIDx0eXBlIC03PjsgLnJlZ2V4cC5jb25kIDx0eXBlIDE0PjsgLnJlZ2V4cC5udW1TdWJleHAgPHR5cGUgLTExPjsgLnJlZ2V4cC5zdWJleHBOYW1lcyA8dHlwZSAyMyBbXSA8dHlwZSAtMTY+PjsgLnJlZ2V4cC5sb25nZXN0IDx0eXBlIC0xNT47IC5yZWdleHAubXUgPHR5cGUgMjQgInN5bmMuTXV0ZXgiIDx0eXBlIDI1IHN0cnVjdCB7IC5zeW5jLnN0YXRlIDx0eXBlIC0zPjsgLnN5bmMuc2VtYSA8dHlwZSAtNz47IH0+CiBmdW5jIChtIDx0eXBlIDI2ICo8dHlwZSAyND4+KSBVbmxvY2sgKCk7CiBmdW5jIChtIDx0eXBlIDI2PikgTG9jayAoKTsKPjsgLnJlZ2V4cC5tYWNoaW5lIDx0eXBlIDI3IFtdIDx0eXBlIDI4ICo8dHlwZSAyOSAiLnJlZ2V4cC5tYWNoaW5lIiA8dHlwZSAzMCBzdHJ1Y3QgeyAucmVnZXhwLnJlIDx0eXBlIDMxICo8dHlwZSAyPj47IC5yZWdleHAucCA8dHlwZSA0PjsgLnJlZ2V4cC5vcCA8dHlwZSAzMiAqPHR5cGUgMTY+PjsgLnJlZ2V4cC5xMCA8dHlwZSAzMyAiLnJlZ2V4cC5xdWV1ZSIgPHR5cGUgMzQgc3RydWN0IHsgLnJlZ2V4cC5zcGFyc2UgPHR5cGUgMzUgW10gPHR5cGUgLTc+PjsgLnJlZ2V4cC5kZW5zZSA8dHlwZSAzNiBbXSA8dHlwZSAzNyAiLnJlZ2V4cC5lbnRyeSIgPHR5cGUgMzggc3RydWN0IHsgLnJlZ2V4cC5wYyA8dHlwZSAtNz47IC5yZWdleHAudCA8dHlwZSAzOSAqPHR5cGUgNDAgIi5yZWdleHAudGhyZWFkIiA8dHlwZSA0MSBzdHJ1Y3QgeyAucmVnZXhwLmluc3QgPHR5cGUgMTI+OyAucmVnZXhwLmNhcCA8dHlwZSA0MiBbXSA8dHlwZSAtMTE+PjsgfT4+PjsgfT4+PjsgfT4+OyAucmVnZXhwLnExIDx0eXBlIDMzPjsgLnJlZ2V4cC5wb29sIDx0eXBlIDQzIFtdIDx0eXBlIDQ0ICo8dHlwZSA0MD4+PjsgLnJlZ2V4cC5tYXRjaGVkIDx0eXBlIC0xNT47IC5yZWdleHAubWF0Y2hjYXAgPHR5cGUgNDUgW10gPHR5cGUgLTExPj47IC5yZWdleHAuaW5wdXRCeXRlcyA8dHlwZSA0NiAiLnJlZ2V4cC5pbnB1dEJ5dGVzIiA8dHlwZSA0NyBzdHJ1Y3QgeyAucmVnZXhwLnN0ciA8dHlwZSA0OCBbXSA8dHlwZSAtMjA+PjsgfT4KIGZ1bmMgKGkgPHR5cGUgNDkgKjx0eXBlIDQ2Pj4pIC5yZWdleHAuc3RlcCAocG9zIDx0eXBlIC0xMT4pICg/IDx0eXBlIC0yMT4sID8gPHR5cGUgLTExPik7CiBmdW5jIChpIDx0eXBlIDQ5PikgLnJlZ2V4cC5jYW5DaGVja1ByZWZpeCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaSA8dHlwZSA0OT4pIC5yZWdleHAuaGFzUHJlZml4IChyZSA8dHlwZSA1MCAqPHR5cGUgMj4+KSA8dHlwZSAtMTU+OwogZnVuYyAoaSA8dHlwZSA0OT4pIC5yZWdleHAuaW5kZXggKHJlIDx0eXBlIDUwPiwgcG9zIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChpIDx0eXBlIDQ5PikgLnJlZ2V4cC5jb250ZXh0IChwb3MgPHR5cGUgLTExPikgPHR5cGUgMTQ+Owo+OyAucmVnZXhwLmlucHV0U3RyaW5nIDx0eXBlIDUxICIucmVnZXhwLmlucHV0U3RyaW5nIiA8dHlwZSA1MiBzdHJ1Y3QgeyAucmVnZXhwLnN0ciA8dHlwZSAtMTY+OyB9PgogZnVuYyAoaSA8dHlwZSA1MyAqPHR5cGUgNTE+PikgLnJlZ2V4cC5zdGVwIChwb3MgPHR5cGUgLTExPikgKD8gPHR5cGUgLTIxPiwgPyA8dHlwZSAtMTE+KTsKIGZ1bmMgKGkgPHR5cGUgNTM+KSAucmVnZXhwLmNhbkNoZWNrUHJlZml4ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpIDx0eXBlIDUzPikgLnJlZ2V4cC5oYXNQcmVmaXggKHJlIDx0eXBlIDUwPikgPHR5cGUgLTE1PjsKIGZ1bmMgKGkgPHR5cGUgNTM+KSAucmVnZXhwLmluZGV4IChyZSA8dHlwZSA1MD4sIHBvcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoaSA8dHlwZSA1Mz4pIC5yZWdleHAuY29udGV4dCAocG9zIDx0eXBlIC0xMT4pIDx0eXBlIDE0PjsKPjsgLnJlZ2V4cC5pbnB1dFJlYWRlciA8dHlwZSA1NCAiLnJlZ2V4cC5pbnB1dFJlYWRlciIgPHR5cGUgNTUgc3RydWN0IHsgLnJlZ2V4cC5yIDx0eXBlIDU2ICJpby5SdW5lUmVhZGVyIiA8dHlwZSA1NyBpbnRlcmZhY2UgeyBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyAucmVnZXhwLmF0RU9UIDx0eXBlIC0xNT47IC5yZWdleHAucG9zIDx0eXBlIC0xMT47IH0+CiBmdW5jIChpIDx0eXBlIDU4ICo8dHlwZSA1ND4+KSAucmVnZXhwLnN0ZXAgKHBvcyA8dHlwZSAtMTE+KSAoPyA8dHlwZSAtMjE+LCA/IDx0eXBlIC0xMT4pOwogZnVuYyAoaSA8dHlwZSA1OD4pIC5yZWdleHAuY2FuQ2hlY2tQcmVmaXggKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGkgPHR5cGUgNTg+KSAucmVnZXhwLmhhc1ByZWZpeCAocmUgPHR5cGUgNTA+KSA8dHlwZSAtMTU+OwogZnVuYyAoaSA8dHlwZSA1OD4pIC5yZWdleHAuaW5kZXggKHJlIDx0eXBlIDUwPiwgcG9zIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChpIDx0eXBlIDU4PikgLnJlZ2V4cC5jb250ZXh0IChwb3MgPHR5cGUgLTExPikgPHR5cGUgMTQ+Owo+OyB9PgogZnVuYyAobSA8dHlwZSA1OSAqPHR5cGUgMjk+PikgLnJlZ2V4cC5uZXdJbnB1dEJ5dGVzIChiIDx0eXBlIDYwIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA2MSAiLnJlZ2V4cC5pbnB1dCIgPHR5cGUgNjIgaW50ZXJmYWNlIHsgLnJlZ2V4cC5zdGVwIChwb3MgPHR5cGUgLTExPikgKHIgPHR5cGUgLTIxPiwgd2lkdGggPHR5cGUgLTExPik7IC5yZWdleHAuY2FuQ2hlY2tQcmVmaXggKCkgPHR5cGUgLTE1PjsgLnJlZ2V4cC5oYXNQcmVmaXggKHJlIDx0eXBlIDUwPikgPHR5cGUgLTE1PjsgLnJlZ2V4cC5pbmRleCAocmUgPHR5cGUgNTA+LCBwb3MgPHR5cGUgLTExPikgPHR5cGUgLTExPjsgLnJlZ2V4cC5jb250ZXh0IChwb3MgPHR5cGUgLTExPikgPHR5cGUgMTQ+OyB9Pj47CiBmdW5jIChtIDx0eXBlIDU5PikgLnJlZ2V4cC5uZXdJbnB1dFN0cmluZyAocyA8dHlwZSAtMTY+KSA8dHlwZSA2MT47CiBmdW5jIChtIDx0eXBlIDU5PikgLnJlZ2V4cC5uZXdJbnB1dFJlYWRlciAociA8dHlwZSA1Nj4pIDx0eXBlIDYxPjsKIGZ1bmMgKG0gPHR5cGUgNTk+KSAucmVnZXhwLmluaXQgKG5jYXAgPHR5cGUgLTExPik7CiBmdW5jIChtIDx0eXBlIDU5PikgLnJlZ2V4cC5hbGxvYyAoaSA8dHlwZSAxMj4pIDx0eXBlIDQ0PjsKIGZ1bmMgKG0gPHR5cGUgNTk+KSAucmVnZXhwLmZyZWUgKHQgPHR5cGUgNDQ+KTsKIGZ1bmMgKG0gPHR5cGUgNTk+KSAucmVnZXhwLm1hdGNoIChpIDx0eXBlIDYxPiwgcG9zIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jIChtIDx0eXBlIDU5PikgLnJlZ2V4cC5jbGVhciAocSA8dHlwZSA2MyAqPHR5cGUgMzM+Pik7CiBmdW5jIChtIDx0eXBlIDU5PikgLnJlZ2V4cC5zdGVwIChydW5xIDx0eXBlIDYzPiwgbmV4dHEgPHR5cGUgNjM+LCBwb3MgPHR5cGUgLTExPiwgbmV4dFBvcyA8dHlwZSAtMTE+LCBjIDx0eXBlIC0yMT4sIG5leHRDb25kIDx0eXBlIDE0Pik7CiBmdW5jIChtIDx0eXBlIDU5PikgLnJlZ2V4cC5hZGQgKHEgPHR5cGUgNjM+LCBwYyA8dHlwZSAtNz4sIHBvcyA8dHlwZSAtMTE+LCBjYXAgPHR5cGUgNjQgW10gPHR5cGUgLTExPj4sIGNvbmQgPHR5cGUgMTQ+LCB0IDx0eXBlIDQ0PikgPHR5cGUgNDQ+OwogZnVuYyAobSA8dHlwZSA1OT4pIC5yZWdleHAub25lcGFzcyAoaSA8dHlwZSA2MT4sIHBvcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+Owo+Pj47IH0+CiBmdW5jIChyZSA8dHlwZSA2NSAqPHR5cGUgMj4+KSAucmVnZXhwLmRvRXhlY3V0ZSAociA8dHlwZSA1Nj4sIGIgPHR5cGUgNjYgW10gPHR5cGUgLTIwPj4sIHMgPHR5cGUgLTE2PiwgcG9zIDx0eXBlIC0xMT4sIG5jYXAgPHR5cGUgLTExPikgPHR5cGUgNjcgW10gPHR5cGUgLTExPj47CiBmdW5jIChyZSA8dHlwZSA1MD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBMb25nZXN0ICgpOwogZnVuYyAocmUgPHR5cGUgNTA+KSAucmVnZXhwLmdldCAoKSA8dHlwZSAyOD47CiBmdW5jIChyZSA8dHlwZSA1MD4pIC5yZWdleHAucHV0ICh6IDx0eXBlIDI4Pik7CiBmdW5jIChyZSA8dHlwZSA1MD4pIE51bVN1YmV4cCAoKSA8dHlwZSAtMTE+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBTdWJleHBOYW1lcyAoKSA8dHlwZSA2OCBbXSA8dHlwZSAtMTY+PjsKIGZ1bmMgKHJlIDx0eXBlIDUwPikgTGl0ZXJhbFByZWZpeCAoKSAocHJlZml4IDx0eXBlIC0xNj4sIGNvbXBsZXRlIDx0eXBlIC0xNT4pOwogZnVuYyAocmUgPHR5cGUgNTA+KSBNYXRjaFJlYWRlciAociA8dHlwZSA1Nj4pIDx0eXBlIC0xNT47CiBmdW5jIChyZSA8dHlwZSA1MD4pIE1hdGNoU3RyaW5nIChzIDx0eXBlIC0xNj4pIDx0eXBlIC0xNT47CiBmdW5jIChyZSA8dHlwZSA1MD4pIE1hdGNoIChiIDx0eXBlIDY5IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBSZXBsYWNlQWxsU3RyaW5nIChzcmMgPHR5cGUgLTE2PiwgcmVwbCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBSZXBsYWNlQWxsTGl0ZXJhbFN0cmluZyAoc3JjIDx0eXBlIC0xNj4sIHJlcGwgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHJlIDx0eXBlIDUwPikgUmVwbGFjZUFsbFN0cmluZ0Z1bmMgKHNyYyA8dHlwZSAtMTY+LCByZXBsIDx0eXBlIDcwICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj4+KSA8dHlwZSAtMTY+OwogZnVuYyAocmUgPHR5cGUgNTA+KSAucmVnZXhwLnJlcGxhY2VBbGwgKGJzcmMgPHR5cGUgNzEgW10gPHR5cGUgLTIwPj4sIHNyYyA8dHlwZSAtMTY+LCBubWF0Y2ggPHR5cGUgLTExPiwgcmVwbCA8dHlwZSA3MiAoZHN0IDx0eXBlIDczIFtdIDx0eXBlIC0yMD4+LCBtIDx0eXBlIDc0IFtdIDx0eXBlIC0xMT4+KSA8dHlwZSA3NSBbXSA8dHlwZSAtMjA+Pj4pIDx0eXBlIDc2IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBSZXBsYWNlQWxsIChzcmMgPHR5cGUgNzcgW10gPHR5cGUgLTIwPj4sIHJlcGwgPHR5cGUgNzc+KSA8dHlwZSA3OCBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHJlIDx0eXBlIDUwPikgUmVwbGFjZUFsbExpdGVyYWwgKHNyYyA8dHlwZSA3OSBbXSA8dHlwZSAtMjA+PiwgcmVwbCA8dHlwZSA3OT4pIDx0eXBlIDgwIFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBSZXBsYWNlQWxsRnVuYyAoc3JjIDx0eXBlIDgxIFtdIDx0eXBlIC0yMD4+LCByZXBsIDx0eXBlIDgyICg/IDx0eXBlIDgzIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA4NCBbXSA8dHlwZSAtMjA+Pj4pIDx0eXBlIDg1IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSAucmVnZXhwLnBhZCAoYSA8dHlwZSA4NiBbXSA8dHlwZSAtMTE+PikgPHR5cGUgODcgW10gPHR5cGUgLTExPj47CiBmdW5jIChyZSA8dHlwZSA1MD4pIC5yZWdleHAuYWxsTWF0Y2hlcyAocyA8dHlwZSAtMTY+LCBiIDx0eXBlIDg4IFtdIDx0eXBlIC0yMD4+LCBuIDx0eXBlIC0xMT4sIGRlbGl2ZXIgPHR5cGUgODkgKD8gPHR5cGUgOTAgW10gPHR5cGUgLTExPj4pPik7CiBmdW5jIChyZSA8dHlwZSA1MD4pIEZpbmQgKGIgPHR5cGUgOTEgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDkyIFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBGaW5kSW5kZXggKGIgPHR5cGUgOTMgW10gPHR5cGUgLTIwPj4pIChsb2MgPHR5cGUgOTQgW10gPHR5cGUgLTExPj4pOwogZnVuYyAocmUgPHR5cGUgNTA+KSBGaW5kU3RyaW5nIChzIDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChyZSA8dHlwZSA1MD4pIEZpbmRTdHJpbmdJbmRleCAocyA8dHlwZSAtMTY+KSAobG9jIDx0eXBlIDk1IFtdIDx0eXBlIC0xMT4+KTsKIGZ1bmMgKHJlIDx0eXBlIDUwPikgRmluZFJlYWRlckluZGV4IChyIDx0eXBlIDU2PikgKGxvYyA8dHlwZSA5NiBbXSA8dHlwZSAtMTE+Pik7CiBmdW5jIChyZSA8dHlwZSA1MD4pIEZpbmRTdWJtYXRjaCAoYiA8dHlwZSA5NyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgOTggW10gPHR5cGUgOTkgW10gPHR5cGUgLTIwPj4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBFeHBhbmQgKGRzdCA8dHlwZSAxMDAgW10gPHR5cGUgLTIwPj4sIHRlbXBsYXRlIDx0eXBlIDEwMSBbXSA8dHlwZSAtMjA+Piwgc3JjIDx0eXBlIDEwMiBbXSA8dHlwZSAtMjA+PiwgbWF0Y2ggPHR5cGUgMTAzIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAxMDQgW10gPHR5cGUgLTIwPj47CiBmdW5jIChyZSA8dHlwZSA1MD4pIEV4cGFuZFN0cmluZyAoZHN0IDx0eXBlIDEwNSBbXSA8dHlwZSAtMjA+PiwgdGVtcGxhdGUgPHR5cGUgLTE2Piwgc3JjIDx0eXBlIC0xNj4sIG1hdGNoIDx0eXBlIDEwNiBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMTA3IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSAucmVnZXhwLmV4cGFuZCAoZHN0IDx0eXBlIDEwOCBbXSA8dHlwZSAtMjA+PiwgdGVtcGxhdGUgPHR5cGUgLTE2PiwgYnNyYyA8dHlwZSAxMDkgW10gPHR5cGUgLTIwPj4sIHNyYyA8dHlwZSAtMTY+LCBtYXRjaCA8dHlwZSAxMTAgW10gPHR5cGUgLTExPj4pIDx0eXBlIDExMSBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHJlIDx0eXBlIDUwPikgRmluZFN1Ym1hdGNoSW5kZXggKGIgPHR5cGUgMTEyIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAxMTMgW10gPHR5cGUgLTExPj47CiBmdW5jIChyZSA8dHlwZSA1MD4pIEZpbmRTdHJpbmdTdWJtYXRjaCAocyA8dHlwZSAtMTY+KSA8dHlwZSAxMTQgW10gPHR5cGUgLTE2Pj47CiBmdW5jIChyZSA8dHlwZSA1MD4pIEZpbmRTdHJpbmdTdWJtYXRjaEluZGV4IChzIDx0eXBlIC0xNj4pIDx0eXBlIDExNSBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHJlIDx0eXBlIDUwPikgRmluZFJlYWRlclN1Ym1hdGNoSW5kZXggKHIgPHR5cGUgNTY+KSA8dHlwZSAxMTYgW10gPHR5cGUgLTExPj47CiBmdW5jIChyZSA8dHlwZSA1MD4pIEZpbmRBbGwgKGIgPHR5cGUgMTE3IFtdIDx0eXBlIC0yMD4+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDExOCBbXSA8dHlwZSAxMTkgW10gPHR5cGUgLTIwPj4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBGaW5kQWxsSW5kZXggKGIgPHR5cGUgMTIwIFtdIDx0eXBlIC0yMD4+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDEyMSBbXSA8dHlwZSAxMjIgW10gPHR5cGUgLTExPj4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBGaW5kQWxsU3RyaW5nIChzIDx0eXBlIC0xNj4sIG4gPHR5cGUgLTExPikgPHR5cGUgMTIzIFtdIDx0eXBlIC0xNj4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBGaW5kQWxsU3RyaW5nSW5kZXggKHMgPHR5cGUgLTE2PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSAxMjQgW10gPHR5cGUgMTI1IFtdIDx0eXBlIC0xMT4+PjsKIGZ1bmMgKHJlIDx0eXBlIDUwPikgRmluZEFsbFN1Ym1hdGNoIChiIDx0eXBlIDEyNiBbXSA8dHlwZSAtMjA+PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSAxMjcgW10gPHR5cGUgMTI4IFtdIDx0eXBlIDEyOSBbXSA8dHlwZSAtMjA+Pj4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBGaW5kQWxsU3VibWF0Y2hJbmRleCAoYiA8dHlwZSAxMzAgW10gPHR5cGUgLTIwPj4sIG4gPHR5cGUgLTExPikgPHR5cGUgMTMxIFtdIDx0eXBlIDEzMiBbXSA8dHlwZSAtMTE+Pj47CiBmdW5jIChyZSA8dHlwZSA1MD4pIEZpbmRBbGxTdHJpbmdTdWJtYXRjaCAocyA8dHlwZSAtMTY+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDEzMyBbXSA8dHlwZSAxMzQgW10gPHR5cGUgLTE2Pj4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBGaW5kQWxsU3RyaW5nU3VibWF0Y2hJbmRleCAocyA8dHlwZSAtMTY+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDEzNSBbXSA8dHlwZSAxMzYgW10gPHR5cGUgLTExPj4+OwogZnVuYyAocmUgPHR5cGUgNTA+KSBTcGxpdCAocyA8dHlwZSAtMTY+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDEzNyBbXSA8dHlwZSAtMTY+PjsKPj4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgQ29tcGlsZVBPU0lYIChleHByIDx0eXBlIC0xNj4pICg/IDx0eXBlIDE+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIE1hdGNoIChwYXR0ZXJuIDx0eXBlIC0xNj4sIGIgPHR5cGUgMTM4IFtdIDx0eXBlIC0yMD4+KSAobWF0Y2hlZCA8dHlwZSAtMTU+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgTWF0Y2hSZWFkZXIgKHBhdHRlcm4gPHR5cGUgLTE2PiwgciA8dHlwZSA1Nj4pIChtYXRjaGVkIDx0eXBlIC0xNT4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBNYXRjaFN0cmluZyAocGF0dGVybiA8dHlwZSAtMTY+LCBzIDx0eXBlIC0xNj4pIChtYXRjaGVkIDx0eXBlIC0xNT4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBNdXN0Q29tcGlsZSAoc3RyIDx0eXBlIC0xNj4pIDx0eXBlIDE+OwpmdW5jIE11c3RDb21waWxlUE9TSVggKHN0ciA8dHlwZSAtMTY+KSA8dHlwZSAxPjsKZnVuYyBRdW90ZU1ldGEgKHMgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKdHlwZSA8dHlwZSAyPjsKY2hlY2tzdW0gMzM5NTRDQzUyMUYwQjM0RjgwQUU2MkEwODM3RkI4QzIxM0VCMUY5QzsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAACOKAAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAADCKAAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAA6CgAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAAgpAAABAAAAAAAAAAAAAAABAAAAAAAAAA==