Lyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NCBub2V0OgogKgogKiBWSU0gLSBWaSBJTXByb3ZlZAlieSBCcmFtIE1vb2xlbmFhcgogKgogKiBEbyAiOmhlbHAgdWdhbmRhIiAgaW4gVmltIHRvIHJlYWQgY29weWluZyBhbmQgdXNhZ2UgY29uZGl0aW9ucy4KICogRG8gIjpoZWxwIGNyZWRpdHMiIGluIFZpbSB0byBzZWUgYSBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQuCiAqIFNlZSBSRUFETUUudHh0IGZvciBhbiBvdmVydmlldyBvZiB0aGUgVmltIHNvdXJjZSBjb2RlLgogKi8KCiNpbmNsdWRlICJ2aW0uaCIKCiNpZm5kZWYgSEFOR1VMX0RFRkFVTFRfS0VZQk9BUkQKIyBkZWZpbmUgSEFOR1VMX0RFRkFVTFRfS0VZQk9BUkQgMwojZW5kaWYKCiNkZWZpbmUgQVVUT01BVEFfTkVXCQkwCiNkZWZpbmUgQVVUT01BVEFfQ09SUkVDVAkxCiNkZWZpbmUgQVVUT01BVEFfU1BFQ0lBTAkyCiNkZWZpbmUgQVVUT01BVEFfQ09SUkVDVF9ORVcJMwojZGVmaW5lIEFVVE9NQVRBX0VSUk9SCQk0CiNkZWZpbmUgQVVUT01BVEFfTlVMTAkJNQoKI2RlZmluZSBGX0YJMHgxCS8qIMPKvLogKGluaXRpYWwgc291bmQpICovCiNkZWZpbmUgRl9NCTB4MgkvKiDB37y6IChtZWRpYWwgdm93ZWwpICovCiNkZWZpbmUgRl9MCTB4NAkvKiDBvry6IChmaW5hbCBjb25zb25hbnQpICovCiNkZWZpbmUgRl9BCTB4OAkvKiBBU0NJSSAqLwojZGVmaW5lIEZfTlVMTCAxCiNkZWZpbmUgTV9OVUxMIDIKI2RlZmluZSBMX05VTEwgMQoKc3RhdGljIGludCBoYW5ndWxfaW5wdXRfc3RhdGUgPSAwOwpzdGF0aWMgaW50IGY9Rl9OVUxMLCBtPU1fTlVMTCwgbD1MX05VTEw7CnN0YXRpYyBpbnQgc3A9MDsKc3RhdGljIGNoYXJfdSBzdGFja1syMF0gPSB7MH07CnN0YXRpYyBpbnQgbGFzdF9sID0gLTEsIGxhc3RfbGwgPSAtMTsKc3RhdGljIGludCBoYW5ndWxfa2V5Ym9hcmRfdHlwZSA9IEhBTkdVTF9ERUZBVUxUX0tFWUJPQVJEOwoKc3RhdGljIHZvaWQgY29udmVydF9rc190b18zKGNvbnN0IGNoYXJfdSAqc3JjLCBpbnQgKmZwLCBpbnQgKm1wLCBpbnQgKmxwKTsKc3RhdGljIGludCBjb252ZXJ0XzNfdG9fa3MoaW50IGZ2LCBpbnQgbXYsIGludCBsdiwgY2hhcl91ICpkZXMpOwpzdGF0aWMgaW50IGhhbmd1bF9hdXRvbWF0YTIoY2hhcl91ICpidWYsIHVuc2lnbmVkIGludCAqYyk7CnN0YXRpYyBpbnQgaGFuZ3VsX2F1dG9tYXRhMyhjaGFyX3UgKmJ1ZiwgdW5zaWduZWQgaW50ICpjKTsKCiNkZWZpbmUgcHVzaCh4KQkge3N0YWNrWyBzcCsrIF0gPSAqKHgpOyBzdGFja1tzcCsrXSA9ICooKHgpKzEpO30KI2RlZmluZSBwb3AoeCkJIHsqKCh4KSArIDEpID0gc3RhY2tbLS1zcF07ICooeCkgPSBzdGFja1stLXNwXTt9CiNkZWZpbmUgcXVlcnkoeCkgeyooKHgpICsgMSkgPSBzdGFja1tzcCAtIDFdOyAqKHgpID0gc3RhY2tbc3AgLSAyXTt9CgojZGVmaW5lIGNvbnZlcnRfM190b19jb2RlIGNvbnZlcnRfM190b19rcwoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqIDMgufq9xMDaxsfAuyDAp8fRILfnxr4gIChSb3V0aW5lcyBmb3IgMyBidWxzaWsga2V5Ym9hcmQpICoqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiAzILn6vcS/obytIMDaxscguq/IryAoMyBidWxzaWsga2V5Ym9hcmQgY29udmVyc2lvbikgKi8KCnN0YXRpYyBjaGFyX3UgdmFsdWVfdGFibGVfZm9yXzNbXSA9CnsKICAgIDI0ICAsICciJyAsICcjJyAsICckJyAsICclJyAsICcmJyAsCS8qICEgIiAjICQgJSAmICovCiAgICAxOCAgLCAnKCcgLCAnKScgLCAnKicgLCAnKycgLCAnLCcgLAkvKiAnICggKSAqICsgLCAqLwogICAgJy0nICwgJy4nICwgMTMgICwgMTcgICwgMjkgICwgMjIgICwJLyogLSAuIC8gMCAxIDIgKi8KICAgIDE5ICAsIDE5ICAsIDI2ICAsIDUgICAsIDEyICAsIDI4ICAsCS8qIDMgNCA1IDYgNyA4ICovCiAgICAyMCAgLCAnOicgLCA5ICAgLCAnMicgLCAnPScgLCAnMycgLAkvKiA5IDogOyA8ID0gPiAqLwogICAgJz8nICwgJ0AnICwgOCAgICwgJyEnICwgMTEgICwgMTAgICwJLyogPyBAIEEgQiBDIEQgKi8KICAgIDI2ICAsIDMgICAsICcvJyAsIDM5ICAsICc4JyAsICc0JyAsCS8qIEUgRiBHIEggSSBKICovCiAgICAnNScgLCAnNicgLCAnMScgLCAnMCcgLCAnOScgLCAnPicgLAkvKiBLIEwgTSBOIE8gUCAqLwogICAgMjggICwgNiAgICwgNyAgICwgJzsnICwgJzcnICwgMTYgICwJLyogUSBSIFMgVCBVIFYgKi8KICAgIDI3ICAsIDIwICAsICc8JyAsIDI1ICAsICdbJyAsIDkyICAsCS8qIFcgWCBZIFogWyBcICovCiAgICAnXScgLCAnXicgLCAnXycgLCAnYCcgLCAyMyAgLCAyMCAgLAkvKiBdIF4gXyBgIGEgYiAqLwogICAgMTAgICwgMjkgICwgMTEgICwgMyAgICwgMjcgICwgNCAgICwJLyogYyBkIGUgZiBnIGggKi8KICAgIDggICAsIDEzICAsIDIgICAsIDE0ICAsIDIwICAsIDExICAsCS8qIGkgaiBrIGwgbSBuICovCiAgICAxNiAgLCAxOSAgLCAyMSAgLCA0ICAgLCA1ICAgLCA3ICAgLAkvKiBvIHAgcSByIHMgdCAqLwogICAgNSAgICwgMTMgICwgOSAgICwgMiAgICwgNyAgICwgMTcgICwJLyogdSB2IHcgeCB5IHogKi8KfTsKCnN0YXRpYyBzaG9ydF91IGtpbmRfdGFibGVfZm9yXzNbXSA9CnsKICAgIEZfTCwgRl9BLCBGX0EsIEZfQSwgRl9BLCBGX0EsCS8qICEgIiAjICQgJSAmICovCiAgICBGX0YsIEZfQSwgRl9BLCBGX0EsIEZfQSwgRl9BLAkvKiAnICggKSAqICsgLCAqLwogICAgRl9BLCBGX0EsIEZfTSwgRl9GLCBGX0wsIEZfTCwJLyogLSAuIC8gMCAxIDIgKi8KICAgIEZfTCwgRl9NLCBGX00sIEZfTSwgRl9NLCBGX00sCS8qIDMgNCA1IDYgNyA4ICovCiAgICBGX00sIEZfQSwgRl9GLCBGX0EsIEZfQSwgRl9BLAkvKiA5IDogOyA8ID0gPiAqLwogICAgRl9BLCBGX0EsIEZfTCwgRl9BLCBGX0wsIEZfTCwJLyogPyBAIEEgQiBDIEQgKi8KICAgIEZfTCwgRl9MLCBGX0EsIEZfQSwgRl9BLCBGX0EsCS8qIEUgRiBHIEggSSBKICovCiAgICBGX0EsIEZfQSwgRl9BLCBGX0EsIEZfQSwgRl9BLAkvKiBLIEwgTSBOIE8gUCAqLwogICAgRl9MLCBGX00sIEZfTCwgRl9BLCBGX0EsIEZfTCwJLyogUSBSIFMgVCBVIFYgKi8KICAgIEZfTCwgRl9MLCBGX0EsIEZfTCwgRl9BLCBGX0EsCS8qIFcgWCBZIFogWyBcICovCiAgICBGX0EsIEZfQSwgRl9BLCBGX0EsIEZfTCwgRl9NLAkvKiBdIF4gXyBgIGEgYiAqLwogICAgRl9NLCBGX00sIEZfTSwgRl9NLCBGX00sIEZfRiwJLyogYyBkIGUgZiBnIGggKi8KICAgIEZfRiwgRl9GLCBGX0YsIEZfRiwgRl9GLCBGX0YsCS8qIGkgaiBrIGwgbSBuICovCiAgICBGX0YsIEZfRiwgRl9MLCBGX00sIEZfTCwgRl9NLAkvKiBvIHAgcSByIHMgdCAqLwogICAgRl9GLCBGX00sIEZfTCwgRl9MLCBGX0YsIEZfTCwJLyogdSB2IHcgeCB5IHogKi8KfTsKCi8qIDMgufq9xL+hvK0gKMf2wOfDyry6LCDA1LfCv7W5rikgLT4gurnH1cPKvLogw7O4rgogKiAzIGJ1bHNpazogKGN1cnJlbnQgaW5pdGlhbCBzb3VuZCwgaW5wdXQgZW5nbGlzaCkgLT4gY29tcG91bmQgaW5pdGlhbCBzb3VuZC4KICovCgogICAgc3RhdGljIGludApjb21mY29uMyhpbnQgdiwgaW50IGMpCnsKICAgIGlmICh2ID09IDIgJiYgYyA9PSAyKQoJcmV0dXJuIDM7CiAgICBpZiAodiA9PSA1ICYmIGMgPT0gNSkKCXJldHVybiA2OwogICAgaWYgKHYgPT0gOSAmJiBjID09IDkpCglyZXR1cm4gMTA7CiAgICBpZiAodiA9PSAxMSAmJiBjID09IDExKQoJcmV0dXJuIDEyOwogICAgaWYgKHYgPT0gMTQgJiYgYyA9PSAxNCkKCXJldHVybiAxNTsKICAgIHJldHVybiAwOwp9CgovKiAzILn6vcS/obytICjH9sDnuPDAvSwgwNS3wiC/tbmuKSAtPiC6ucfVILjwwL0gw7O4rgogKiAzIGJ1bHNpazogKGN1cnJlbnQgdm93ZWwsIGlucHV0IGVuZ2xpc2gpIC0+IGNvbXBvdW5kIHZvd2VsLgogKi8KCiAgICBzdGF0aWMgaW50CmNvbXZvdzMoaW50IHYsIGludCBjKQp7CiAgICBzd2l0Y2ggKHYpCiAgICB7CgljYXNlIDEzOgkJCQkJLyogpMcgKi8KCSAgICBzd2l0Y2ggKGMpIHsKCQljYXNlIDM6CQkJCQkvKiCkx6S/ICovCgkJICAgIHJldHVybiAxNDsKCQljYXNlIDQ6CQkJCQkvKiCkx6TAICovCgkJICAgIHJldHVybiAxNTsKCQljYXNlIDI5OgkJCQkvKiCkx6TTICovCgkJICAgIHJldHVybiAxODsKCSAgICB9CgkgICAgYnJlYWs7CgoJY2FzZSAyMDoJCQkJCS8qIKTMICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSA3OgkJCQkJLyogpMykwyAqLwoJCSAgICByZXR1cm4gMjE7CgkJY2FzZSAxMDoJCQkJLyogpMykxCAqLwoJCSAgICByZXR1cm4gMjI7CgkJY2FzZSAyOToJCQkJLyogpMyk0yAqLwoJCSAgICByZXR1cm4gMjM7CgkgICAgfQoJICAgIGJyZWFrOwoKCSAgICAvKiAzILn6vcQgwNrGx8C6IKTRpNMgsKEgwNbAuLnHt84gLi4uICovCiAgICB9CiAgICByZXR1cm4gMDsKfQoKLyogMyC5+r3Ev6G8rSAox/bA5yC53sSnLCC/tbmuwNogwNS3wikgLT4gud7EpwogKiAzIGJ1bHNpazogKGN1cnJlbnQgcHJvcCg/KSwgaW5wdXQgZW5nbGlzaCkgLT4gcHJvcCg/KS4KICogSSB3YW50IHRvIHNheSwgdGhlICdwcm9wJyBpcyBzaW1pbGFyIHRvICdmaW5hbCBjb25zb25hbnQnLCBidXQgbm90IHZvd2VsLgogKiAoSSBjYW5ub3QgZmluZCB0aGUgcmVhbCBlbmdsaXNoIGZyb20gbXkgZGljdGlvbmFyeS4gU29ycnkhKQogKiBWSU06IFYgPSBpbml0aWFsIHNvdW5kLCBJID0gbWVkaWFsIHZvd2VsLCBNID0gZmluYWwgY29uc29uYW50LgogKi8KCiAgICBzdGF0aWMgaW50CmNvbWNvbjMoaW50IGssIGludCBjKQp7CiAgICBzd2l0Y2ggKGspCiAgICB7CgljYXNlIDI6CQkJCQkJLyogpKEgKi8KCSAgICBzd2l0Y2ggKGMpIHsKCQljYXNlIDI6CgkJICAgIHJldHVybiAzOwkJCQkvKiCkoaShICovCgkJY2FzZSAyMToKCQkgICAgcmV0dXJuIDQ7CQkJCS8qIKShpLUgKi8KCSAgICB9CgkgICAgYnJlYWs7CgoJY2FzZSA1OgkJCQkJCS8qIKSkICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAyNDoJCQkJLyogpKSkuCAqLwoJCSAgICByZXR1cm4gNjsKCQljYXNlIDI5OgoJCSAgICByZXR1cm4gNzsJCQkJLyogpKSkviAqLwoJICAgIH0KCSAgICBicmVhazsKCgljYXNlIDk6CQkJCQkJLyogpKkgKi8KCSAgICBzd2l0Y2ggKGMpIHsKCQljYXNlIDI6CQkJCQkvKiCkqaShICovCgkJICAgIHJldHVybiAxMDsKCQljYXNlIDE3OgkJCQkvKiCkqaSxICovCgkJICAgIHJldHVybiAxMTsKCQljYXNlIDE5OgkJCQkvKiCkqaSyICovCgkJICAgIHJldHVybiAxMjsKCQljYXNlIDIxOgkJCQkvKiCkqaS1ICovCgkJICAgIHJldHVybiAxMzsKCQljYXNlIDI3OgkJCQkvKiCkqaS8ICovCgkJICAgIHJldHVybiAxNDsKCQljYXNlIDI4OgkJCQkvKiCkqaS9ICovCgkJICAgIHJldHVybiAxNTsKCQljYXNlIDI5OgkJCQkvKiCkqaS+ICovCgkJICAgIHJldHVybiAxNjsKCSAgICB9CgkgICAgYnJlYWs7CgoJY2FzZSAxOToKCSAgICBzd2l0Y2ggKGMpIHsKCQljYXNlIDIxOgkJCQkvKiCksqS1ICovCgkJICAgIHJldHVybiAyMDsKCSAgICB9CgkgICAgYnJlYWs7CiAgICB9CiAgICByZXR1cm4gMDsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKiogMiC5+r3EwNrGx8C7IMCnx9Egt+fGviAgKFJvdXRpbmVzIGZvciAyIGJ1bHNpayBrZXlib2FyZCkgKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiAgICBzdGF0aWMgaW50CmtpbmRfdGFibGVfZm9yXzIoaW50IGMpCnsKICAgIHN0YXRpYyBjaGFyX3UgdGFibGVbXSA9CiAgICB7CiAgICAgLyogYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCwgbSwgbiwgbywgcCwgcSwgciwgcyAqLwoJMCwgMSwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgMCwKICAgICAvKiB0LCB1LCB2LCB3LCB4LCB5LCB6ICovCgkwLCAxLCAwLCAwLCAwLCAxLCAwCiAgICB9OwoKICAgIGlmIChjIDw9ICdaJykKCWMgLT0gJ0EnOwogICAgZWxzZQoJYyAtPSAnYSc7CgogICAgcmV0dXJuIHRhYmxlW2NdOwp9CgovKiAyILn6vcS/obytIL+1ua7A2iAtPiDBtsfVx/wgw8q8uiC6r8ivCiAqICgyIGJ1bHNpazogY29udmVyc2lvbiBlbmdsaXNoIGNoYXIuIHRvIGluaXRpYWwgc291bmQgb2YgY29tcG91bmQgdHlwZSkKICogsOGw+jogw8q8usDMIL7GtM+46SAwIChJZiBpdCBpcyBub3QgaW5pdGlhbCBzb3VuZCwgcmV0dXJuIDApLgogKi8KICAgIHN0YXRpYyBpbnQKZmNvbihpbnQgYykKewogICAgc3RhdGljIGNoYXJfdSB0YWJsZVtdID0KICAgIHsKCS8qRSAqLyA2ICwgLypGICovIDAgLCAvKkcgKi8gMCAsIC8qSCAqLyAwICwgLypJICovIDAgLCAvKkogKi8gMCAsIC8qSyAqLyAwICwKCS8qTCAqLyAwICwgLypNICovIDAgLCAvKk4gKi8gMCAsIC8qTyAqLyAwICwgLypQICovIDAgLCAvKlEgKi8gMTAsIC8qUiAqLyAzICwKCS8qUyAqLyAwICwgLypUICovIDEyLCAvKlUgKi8gMCAsIC8qViAqLyAwICwgLypXICovIDE1LCAvKlggKi8gMCAsIC8qWSAqLyAwICwKCS8qWiAqLyAwICwgLypbICovIDAgLCAvKlwgKi8gMCAsIC8qXSAqLyAwICwgLypeICovIDAgLCAvKl8gKi8gMCAsIC8qYCAqLyAwICwKCS8qYSAqLyA4ICwgLypiICovIDAgLCAvKmMgKi8gMTYsIC8qZCAqLyAxMywgLyplICovIDUgLCAvKmYgKi8gNyAsIC8qZyAqLyAyMCwKCS8qaCAqLyAwICwgLyppICovIDAgLCAvKmogKi8gMCAsIC8qayAqLyAwICwgLypsICovIDAgLCAvKm0gKi8gMCAsIC8qbiAqLyAwICwKCS8qbyAqLyAwICwgLypwICovIDAgLCAvKnEgKi8gOSAsIC8qciAqLyAyICwgLypzICovIDQgLCAvKnQgKi8gMTEsIC8qdSAqLyAwICwKCS8qdiAqLyAxOSwgLyp3ICovIDE0LCAvKnggKi8gMTgsIC8qeSAqLyAwICwgLyp6ICovIDE3CiAgICB9OwoKICAgIGlmIChjIDwgJ0UnIHx8IGMgPiAneicpCglyZXR1cm4gMDsKICAgIHJldHVybiB0YWJsZVtjIC0gJ0UnXTsKfQoKLyogMiC5+r3Ev6G8rSC/tbmuwNogLT4gwd+8uiC6r8ivCiAqICgyIGJ1bHNpazogY29udmVyc2lvbiBlbmdsaXNoIGNoYXIuIHRvIG1lZGlhbCB2b3dlbCkKICogsOGw+jogwd+8usDMIL7GtM+46SAwIChJZiBpdCBpcyBub3QgbWVkaWFsIHZvd2VsLCByZXR1cm4gMCkuCiAqLwogICAgc3RhdGljIGludAp2b3coaW50IGMpCnsKICAgIHN0YXRpYyBjaGFyX3UgdGFibGVbXSA9CiAgICB7CgkvKk8gKi8gNiAsIC8qUCAqLyAxMiwgLypRICovIDAgLCAvKlIgKi8gMCAsIC8qUyAqLyAwICwgLypUICovIDAgLCAvKlUgKi8gMCAsCgkvKlYgKi8gMCAsIC8qVyAqLyAwICwgLypYICovIDAgLCAvKlkgKi8gMCAsIC8qWiAqLyAwICwgLypbICovIDAgLCAvKlwgKi8gMCAsCgkvKl0gKi8gMCAsIC8qXiAqLyAwICwgLypfICovIDAgLCAvKmAgKi8gMCAsIC8qYSAqLyAwICwgLypiICovIDI2LCAvKmMgKi8gMCAsCgkvKmQgKi8gMCAsIC8qZSAqLyAwICwgLypmICovIDAgLCAvKmcgKi8gMCAsIC8qaCAqLyAxMywgLyppICovIDUgLCAvKmogKi8gNyAsCgkvKmsgKi8gMyAsIC8qbCAqLyAyOSwgLyptICovIDI3LCAvKm4gKi8gMjAsIC8qbyAqLyA0ICwgLypwICovIDEwLCAvKnEgKi8gMCAsCgkvKnIgKi8gMCAsIC8qcyAqLyAwICwgLyp0ICovIDAgLCAvKnUgKi8gMTEsIC8qdiAqLyAwICwgLyp3ICovIDAgLCAvKnggKi8gMCAsCgkvKnkgKi8gMTl9OwoKICAgIGlmIChjIDwgJ08nIHx8IGMgPiAneScpCglyZXR1cm4gMDsKICAgIHJldHVybiB0YWJsZVtjIC0gJ08nXTsKfQoKLyogMrn6vcS/obytIL+1ua7A2iAtPiC53sSnILqvyK8KICogKDIgYnVsc2lrOiBjb252ZXJzaW9uIGVuZ2xpc2ggY2hhci4gdG8gcHJvcCkKICogsOGw+jogud7Ep8DMIL7GtM+46SAwIChJZiBub3QgcHJvcCwgcmV0dXJuIDApCiAqLwogICAgc3RhdGljIGludApsY29uKGludCBjKQp7CiAgICBzdGF0aWMgY2hhcl91IHRhYmxlW10gPQogICAgewoJLypSICovIDMgLCAvKlMgKi8gMCAsIC8qVCAqLyAyMiwgLypVICovIDAgLCAvKlYgKi8gMCAsIC8qVyAqLyAwICwgLypYICovIDAgLAoJLypZICovIDAgLCAvKlogKi8gMCAsIC8qWyAqLyAwICwgLypcICovIDAgLCAvKl0gKi8gMCAsIC8qXiAqLyAwICwgLypfICovIDAgLAoJLypgICovIDAgLCAvKmEgKi8gMTcsIC8qYiAqLyAwICwgLypjICovIDI1LCAvKmQgKi8gMjMsIC8qZSAqLyA4ICwgLypmICovIDkgLAoJLypnICovIDI5LCAvKmggKi8gMCAsIC8qaSAqLyAwICwgLypqICovIDAgLCAvKmsgKi8gMCAsIC8qbCAqLyAwICwgLyptICovIDAgLAoJLypuICovIDAgLCAvKm8gKi8gMCAsIC8qcCAqLyAwICwgLypxICovIDE5LCAvKnIgKi8gMiAsIC8qcyAqLyA1ICwgLyp0ICovIDIxLAoJLyp1ICovIDAgLCAvKnYgKi8gMjgsIC8qdyAqLyAyNCwgLyp4ICovIDI3LCAvKnkgKi8gMCAsIC8qeiAqLyAyNgogICAgfTsKCiAgICBpZiAoYyA8ICdSJyB8fCBjID4gJ3onKQoJcmV0dXJuIDA7CiAgICByZXR1cm4gdGFibGVbYyAtICdSJ107Cn0KCi8qIDIgufq9xL+hvK0gKMf2wOcgud7Epywgv7W5rsDaIMDUt8IpIC0+ILnexKcguq/IrwogKiAoMiBidWxzaWs6IGNvbnZlcnNpb24gKGN1cnIuIHByb3AsIGlucHV0IGVuZ2xpc2gpIHRvIHByb3ApCiAqLwoKICAgIHN0YXRpYyBpbnQKY29tY29uMihpbnQgaywgaW50IGMpCnsKICAgIHN3aXRjaCAoaykKICAgIHsKCWNhc2UgMjoJCQkJCS8qIKShICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAndCc6CgkJICAgIHJldHVybiA0OwkJCS8qIKShpLUgKi8KCSAgICB9CgkgICAgYnJlYWs7CgoJY2FzZSA1OgkJCQkJLyogpKQgKi8KCSAgICBzd2l0Y2ggKGMpIHsKCQljYXNlICd3JzoJCQkvKiCkpKS4ICovCgkJICAgIHJldHVybiA2OwoJCWNhc2UgJ2cnOgkJCS8qIKSkpL4gKi8KCQkgICAgcmV0dXJuIDc7CgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgOToJCQkJCS8qIKSpICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAncic6CQkJLyogpKmkoSAqLwoJCSAgICByZXR1cm4gMTA7CgkJY2FzZSAnYSc6CQkJLyogpKmksSAqLwoJCSAgICByZXR1cm4gMTE7CgkJY2FzZSAncSc6CQkJLyogpKmksiAqLwoJCSAgICByZXR1cm4gMTI7CgkJY2FzZSAndCc6CQkJLyogpKmktSAqLwoJCSAgICByZXR1cm4gMTM7CgkJY2FzZSAneCc6CQkJLyogpKmkvCAqLwoJCSAgICByZXR1cm4gMTQ7CgkJY2FzZSAndic6CQkJLyogpKmkvSAqLwoJCSAgICByZXR1cm4gMTU7CgkJY2FzZSAnZyc6CQkJLyogpKmkviAqLwoJCSAgICByZXR1cm4gMTY7CgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgMTk6CQkJCS8qIKSyICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAndCc6CQkJLyogpLKktSAqLwoJCSAgICByZXR1cm4gMjA7CgkgICAgfQoJICAgIGJyZWFrOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCi8qIDK5+r3Ev6G8rSAox/bA5yDB37y6LCC/tbmuIMDUt8IpIC0+IMHfvLoguq/IrwogKiAoMiBidWxzaWs6IGNvbnZlcnNpb24gKGN1cnIuIG1lZGlhbCB2b3dlbCwgaW5wdXQgZW5nbGlzaCkgdG8gbWVkaWFsCiAqIHZvd2VsKQogKi8KCiAgICBzdGF0aWMgaW50CmNvbXZvdzIoaW50IHYsIGludCBjKQp7CiAgICBzd2l0Y2ggKHYpCiAgICB7CgljYXNlIDEzOgkJCQkJLyogpMcgKi8KCSAgICBzd2l0Y2ggKGMpIHsKCQljYXNlICdrJzoJCQkJLyogpMekvyAqLwoJCSAgICByZXR1cm4gMTQ7CgkJY2FzZSAnbyc6CQkJCS8qIKTHpMAgKi8KCQkgICAgcmV0dXJuIDE1OwoJCWNhc2UgJ2wnOgkJCQkvKiCkx6TTICovCgkJICAgIHJldHVybiAxODsKCSAgICB9CgkgICAgYnJlYWs7CgoJY2FzZSAyMDoJCQkJCS8qIKTMICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAnaic6CQkJCS8qIKTMpMMgKi8KCQkgICAgcmV0dXJuIDIxOwoJCWNhc2UgJ3AnOgkJCQkvKiCkzKTEICovCgkJICAgIHJldHVybiAyMjsKCQljYXNlICdsJzoJCQkJLyogpMyk0yAqLwoJCSAgICByZXR1cm4gMjM7CgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgMjc6CQkJCQkvKiCk0SAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgJ2wnOgkJCQkvKiCk0aTTICovCgkJICAgIHJldHVybiAyODsKCSAgICB9CgkgICAgYnJlYWs7CiAgICB9CiAgICByZXR1cm4gMDsKfQoKICAgIGludApoYW5ndWxfaW5wdXRfc3RhdGVfZ2V0KHZvaWQpCnsKICAgIHJldHVybiBoYW5ndWxfaW5wdXRfc3RhdGU7Cn0KCiAgICB2b2lkCmhhbmd1bF9pbnB1dF9zdGF0ZV9zZXQoaW50IHN0YXRlKQp7CiAgICBoYW5ndWxfaW5wdXRfc3RhdGUgPSBzdGF0ZTsKICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwp9CgogICAgaW50CmltX2dldF9zdGF0dXModm9pZCkKewogICAgcmV0dXJuIGhhbmd1bF9pbnB1dF9zdGF0ZV9nZXQoKTsKfQoKICAgIHZvaWQKaGFuZ3VsX2lucHV0X3N0YXRlX3RvZ2dsZSh2b2lkKQp7CiAgICBpZiAoaGFuZ3VsX2lucHV0X3N0YXRlX2dldCgpKQogICAgewoJaGFuZ3VsX2lucHV0X3N0YXRlX3NldCgwKTsKCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJewoJICAgIHB1c2hfcmF3X2tleShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgMik7CgkgICAgY29tcG9zaW5nX2hhbmd1bCA9IDA7Cgl9CiAgICB9CiAgICBlbHNlCgloYW5ndWxfaW5wdXRfc3RhdGVfc2V0KDEpOwoKICAgIGlmIChzaG93bW9kZSgpKQogICAgewoJc2V0Y3Vyc29yKCk7CglvdXRfZmx1c2goKTsKICAgIH0KCiAgICBndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7Cn0KCiAgICBzdGF0aWMgaW50Cmhhbmd1bF9hdXRvbWF0YTIoY2hhcl91ICpidWYsIGludF91ICpjKQp7CiAgICBpbnQgdCx0MjsKCiAgICBpZiAoKmMgPT0gQlMpCiAgICB7CglpZiAoc3AgPT0gMCkKCSAgICByZXR1cm4gQVVUT01BVEFfU1BFQ0lBTDsKCWVsc2UgaWYgKHNwIDwgNCkKCXsKCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCSAgICByZXR1cm4gQVVUT01BVEFfTlVMTDsKCX0KCXBvcChidWYpOwoJcXVlcnkoYnVmKTsKCWNvbnZlcnRfa3NfdG9fMyhidWYsICZmLCAmbSwgJmwpOwoJbGFzdF9sID0gbGFzdF9sbDsKCWxhc3RfbGwgPSAtMTsKCXJldHVybiBBVVRPTUFUQV9DT1JSRUNUOwogICAgfQogICAgaWYgKCghKCpjID49ICdBJyAmJiAqYyA8PSAnWicpKSAmJiAoISgqYyA+PSAnYScgJiYgKmMgPD0gJ3onKSkpCiAgICB7CgloYW5ndWxfaW5wdXRfY2xlYXIoKTsKCXJldHVybiBBVVRPTUFUQV9TUEVDSUFMOwogICAgfQogICAgdCA9ICpjOwogICAgc3dpdGNoIChraW5kX3RhYmxlX2Zvcl8yKHQpKQogICAgewoJY2FzZSAwOiAvKiDA2sC9IChjb25zb25hbnQpICovCgkgICAgaWYgKGYgPT0gRl9OVUxMKQoJICAgIHsKCQlpZiAobSAhPSBNX05VTEwpCgkJICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwoJCWYgPSBmY29uKHQpOwoJCWNvbnZlcnRfM190b19jb2RlKGYsIE1fTlVMTCwgTF9OVUxMLCBidWYpOwoJCXB1c2goYnVmKTsKCQlsYXN0X2xsID0gbGFzdF9sID0gLTE7CgkJcmV0dXJuIEFVVE9NQVRBX05FVzsKCSAgICB9CgkgICAgaWYgKG0gPT0gTV9OVUxMKQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCSAgICBpZiAobCA9PSBMX05VTEwpCgkgICAgewoJCXQyID0gbGNvbih0KTsKCQlpZiAoIXQyKSAgICAvKiC53sSnwLi3ziDA+8fVx8/B9r7KtNkgKGNhbm5vdCB1c2UgaXQgYXMgYSBwcm9wKSAqLwoJCXsKCQkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCQkgICAgZiA9IGZjb24odCk7CgkJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIG0sIGwsIGJ1Zik7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX05FVzsKCQl9CgkJaWYgKDIgPT0gY29udmVydF8zX3RvX2NvZGUoZiwgbSwgdDIsIGJ1ZikpCgkJewoJCSAgICBsYXN0X2xsID0gLTE7CgkJICAgIGxhc3RfbCA9IHQ7CgkJICAgIGwgPSB0MjsKCQkgICAgcHVzaChidWYpOwoJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkJZWxzZQkvKiC53sSnwLi3ziC+srfBx8+/tMC4s6ogY29kZb+hIL74tMIgsdvA2sDMtNkgKi8KCQl7CS8qIGNhbm5vdCBmaW5kIHN1Y2ggYSBwcm9wIGluIHRoZSBjb2RlIHRhYmxlICovCgkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCQkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgkJICAgIGYgPSBmY29uKHQpOwoJCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBsLCBidWYpOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIHJldHVybiBBVVRPTUFUQV9ORVc7CgkJfQoJICAgIH0KCSAgICAvKiDDyiDB3yDBvry6wMwguPC1ziCwrsPfvu7BriDA1rTZCgkgICAgICogSSBoYXZlIGFsbCB0aGUgJ2luaXRpYWwgc291bmQnIGFuZCAnbWVkaWFsIHZvd2VsJyBhbmQgJ2ZpbmFsCgkgICAgICogY29uc29uYW50Jy4KCSAgICAgKi8KCSAgICB0MiA9IGNvbWNvbjIobCwgdCk7CgkgICAgaWYgKHQyKQoJICAgIHsKCQlpZiAoMiA9PSBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCB0MiwgYnVmKSkKCQl7CgkJICAgIGwgPSB0MjsKCQkgICAgbGFzdF9sbCA9IGxhc3RfbDsKCQkgICAgbGFzdF9sID0gdDsKCQkgICAgcHVzaChidWYpOwoJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkgICAgfQoJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCSAgICBmID0gZmNvbih0KTsKCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBsLCBidWYpOwoJICAgIHB1c2goYnVmKTsKCSAgICByZXR1cm4gQVVUT01BVEFfTkVXOwoKCWNhc2UgMToKCSAgICBpZiAoZiA9PSBGX05VTEwpCgkgICAgewoJCWhhbmd1bF9pbnB1dF9jbGVhcigpOwoJCW0gPSB2b3codCk7CgkJY29udmVydF8zX3RvX2NvZGUgKGYsIG0sIExfTlVMTCwgYnVmKTsKCQlwdXNoIChidWYpOwoJCWxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCQlyZXR1cm4gQVVUT01BVEFfTkVXOwoJICAgIH0KCSAgICBpZiAobSA9PSBNX05VTEwpCgkgICAgewoJCW0gPSB2b3codCk7CgkJaWYgKDIgPT0gY29udmVydF8zX3RvX2NvZGUoZiwgbSwgTF9OVUxMLCBidWYpKQoJCXsKCQkgICAgbGFzdF9sbCA9IGxhc3RfbCA9IC0xOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOwoJCX0KCQltID0gTV9OVUxMOwoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCSAgICB9CgkgICAgaWYgKGwgPT0gTF9OVUxMKQoJICAgIHsKCQl0MiA9IGNvbXZvdzIobSwgdCk7CgkJaWYgKHQyKQoJCXsKCQkgICAgaWYgKDIgIT0gY29udmVydF8zX3RvX2NvZGUoZiwgdDIsIExfTlVMTCwgYnVmKSkKCQkJcmV0dXJuIEFVVE9NQVRBX0VSUk9SOwoKCQkgICAgbSA9IHQyOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCSAgICB9CgkgICAgcG9wKGJ1Zik7CgkgICAgcG9wKGJ1Zik7CgkgICAgc3AgPSAwOwoJICAgIGlmIChsYXN0X2wgPT0gLTEpCgkgICAgewoJCS8qIMC9Li4uIMDMsNQgx8q/5MfPs6o/PyAoSG1tLi4uIElzIGl0IG5lZWRlZD8pICovCgkJY29udmVydF9rc190b18zKGJ1ZiwgJmYsICZtLCAmbCk7CgkgICAgfQoJICAgIGVsc2UKCSAgICB7CgkJY2hhcl91IHRtcFszXTsKCQlmID0gZmNvbihsYXN0X2wpOwoJCWNvbnZlcnRfM190b19jb2RlIChmLCBNX05VTEwsIExfTlVMTCwgdG1wKTsKCQlwdXNoICh0bXApOwoJICAgIH0KCSAgICBtID0gdm93KHQpOwoJICAgIGwgPSBMX05VTEw7CgkgICAgY29udmVydF8zX3RvX2NvZGUoZiwgbSwgbCwgYnVmICsgMik7CgkgICAgcHVzaChidWYgKyAyKTsKCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVF9ORVc7CgoJZGVmYXVsdDoKCSAgICBJRU1TRyhfKCJFMjU2OiBIYW5ndWwgYXV0b21hdGEgRVJST1IiKSk7CgkgICAgYnJlYWs7CiAgICB9CiAgICByZXR1cm4gQVVUT01BVEFfRVJST1I7IC8qIFJyRWVBYUxsTGxZeSBFZVJyUnJPb1JyICovCn0KCiAgICBzdGF0aWMgaW50Cmhhbmd1bF9hdXRvbWF0YTMoY2hhcl91ICpidWYsIGludF91ICpjKQp7CiAgICBpbnQgdCwgdDI7CgogICAgaWYgKCpjID49ICchJyAmJiAqYyA8PSAneicpCiAgICB7CgkqYyAtPSAnISc7Cgl0ID0gdmFsdWVfdGFibGVfZm9yXzNbKmNdOwoJc3dpdGNoIChraW5kX3RhYmxlX2Zvcl8zWypjXSkKCXsKCSAgICBjYXNlIEZfRjogLyogw8q8urmuwNogKGNoYXIuIG9mIGFuIGluaXRpYWwgc291bmQpICovCgkJaWYgKG0gIT0gTV9OVUxMIHx8IHNwID09IDApCgkJewoJCSAgICAvKiDDyry6wMwguvG++rDFs6ogtNnAvSCx28DaILjwwLix4iC9w8DbCgkJICAgICAqIEVtcHR5ICdpbml0aWFsIHNvdW5kJywgc28gc3RhcnRpbmcgYXV0b21hdGEuCgkJICAgICAqLwoJCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCQkgICAgZiA9IHQ7CgkJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIE1fTlVMTCwgTF9OVUxMLCBidWYpOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIHJldHVybiBBVVRPTUFUQV9ORVc7CgkJfQoJCWlmICgodDIgPSBjb21mY29uMyhmLHQpKSAhPSAwKQkvKiC6ucDawL0gKGRvdWJsZT8gY29uc29uYW50KSAqLwoJCXsKCQkgICAgZj10MjsKCQkgICAgY29udmVydF8zX3RvX2NvZGUoZiwgTV9OVUxMLCBMX05VTEwsIGJ1Zik7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkgICAgY2FzZSBGX006CS8qILjwwL0gKHZvd2VsKSAqLwoJCWlmIChtID09IE1fTlVMTCkKCQl7CgkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIHQsIExfTlVMTCxidWYpKQoJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgoJCSAgICBtID0gdDsKCQkgICAgcHVzaChidWYpOwoJCSAgICBpZiAoZiA9PSBGX05VTEwpCgkJCXJldHVybiBBVVRPTUFUQV9ORVc7CgkJICAgIGVsc2UKCQkJcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCWlmICgodDIgPSBjb212b3czKG0sdCkpKSAgICAvKiC6ubjwwL0gKGEgZGlwaHRob25nKSAqLwoJCXsKCQkgICAgbSA9IHQyOwoJCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBMX05VTEwsIGJ1Zik7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkgICAgY2FzZSBGX0w6CS8qILnexKcgKHByb3A/KSAqLwoJCWlmIChtID09IE1fTlVMTCkKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0VSUk9SOyAvKiDB37y6vvi0wiDBvry6ICovCgkJaWYgKGwgPT0gTF9OVUxMKQoJCXsKCQkgICAgaWYgKDIgIT0gY29udmVydF8zX3RvX2NvZGUoZiwgbSwgdCwgYnVmKSkKCQkgICAgewoJCQlsID0gTF9OVUxMOwoJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgkJICAgIH0KCQkgICAgcHVzaChidWYpOwoJCSAgICBsID0gdDsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCWlmICgodDIgPSBjb21jb24zKGwsdCkpICE9IDApCS8qILq5ILnexKcgPz8gKGRvdWJsZSBwcm9wPykgKi8KCQl7CgkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIG0sIHQyLCBidWYpKQoJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIGwgPSB0MjsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkgICAgY2FzZSBGX0E6IC8qIMavvPa5rsDas6ogvP3A2iAoc3BlY2lhbCBjaGFyLiBvciBudW1iZXIpICovCgkJaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgkJKmMgPSB0OwoJCXJldHVybiBBVVRPTUFUQV9TUEVDSUFMOwoJfQogICAgfQogICAgaWYgKCpjID09IEJTKQogICAgewoJaWYgKHNwID49IDQpCgl7CgkgICAgcG9wKGJ1Zik7CgkgICAgcG9wKGJ1Zik7CgkgICAgY29udmVydF9rc190b18zKGJ1ZiwgJmYsICZtLCAmbCk7CgkgICAgcHVzaChidWYpOwoJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOwoJfQoJZWxzZSBpZiAoc3AgPT0gMCkKCXsKCSAgICByZXR1cm4gQVVUT01BVEFfU1BFQ0lBTDsKCX0KCWVsc2UKCXsKCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCSAgICByZXR1cm4gQVVUT01BVEFfTlVMTDsKCX0KICAgIH0KICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwogICAgcmV0dXJuIEFVVE9NQVRBX1NQRUNJQUw7Cn0KCiAgICB2b2lkCmhhbmd1bF9rZXlib2FyZF9zZXQodm9pZCkKewogICAgaW50CSAgICBrZXlib2FyZDsKICAgIGNoYXIgICAgKnM7CgogICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgogICAgaWYgKChzID0gZ2V0ZW52KCJWSU1fS0VZQk9BUkQiKSkgPT0gTlVMTCkKCXMgPSBnZXRlbnYoIkhBTkdVTF9LRVlCT0FSRF9UWVBFIik7CgogICAgaWYgKHMpCiAgICB7CglpZiAoKnMgPT0gJzInKQoJICAgIGtleWJvYXJkID0gMjsKCWVsc2UKCSAgICBrZXlib2FyZCA9IDM7CgloYW5ndWxfa2V5Ym9hcmRfdHlwZSA9IGtleWJvYXJkOwogICAgfQp9CgogICAgaW50Cmhhbmd1bF9pbnB1dF9wcm9jZXNzKGNoYXJfdSAqcywgaW50IGxlbikKewogICAgaW50IG47CiAgICB1bnNpZ25lZCBpbnQgYzsKICAgIGNoYXJfdSBoYW5idWZbMjBdOwoKICAgIGlmIChsZW4gPT0gMSkKCS8qIG5vcm1hbCBrZXkgcHJlc3MgKi8KCWMgPSAqczsKICAgIGVsc2UgaWYgKGxlbiA9PSAzICYmIHNbMF0gPT0gQ1NJICYmIHNbMV0gPT0gJ2snICYmIHNbMl0gPT0gJ2InKQogICAgewoJLyogYmFja3NwYWNlICovCglpZiAoY29tcG9zaW5nX2hhbmd1bCkKCSAgICBjID0gQ3RybF9IOwoJZWxzZQoJICAgIHJldHVybiBsZW47CiAgICB9CiAgICBlbHNlCiAgICB7CglpZiAoY29tcG9zaW5nX2hhbmd1bCkKCSAgICBwdXNoX3Jhd19rZXkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIDIpOwoJaGFuZ3VsX2lucHV0X2NsZWFyKCk7Cgljb21wb3NpbmdfaGFuZ3VsID0gMDsKCXJldHVybiBsZW47CiAgICB9CgogICAgaWYgKGhhbmd1bF9rZXlib2FyZF90eXBlID09IDIpCgluID0gaGFuZ3VsX2F1dG9tYXRhMihoYW5idWYsICZjKTsKICAgIGVsc2UKCW4gPSBoYW5ndWxfYXV0b21hdGEzKGhhbmJ1ZiwgJmMpOwoKICAgIGlmIChuID09IEFVVE9NQVRBX0NPUlJFQ1QpCiAgICB7CglTVFJOQ1BZKGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCBoYW5idWYsIDIpOwoJZ3VpX3VwZGF0ZV9jdXJzb3IoVFJVRSwgRkFMU0UpOwoJcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlIGlmIChuID09IEFVVE9NQVRBX05FVykKICAgIHsKCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJICAgIHB1c2hfcmF3X2tleShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgMik7CglTVFJOQ1BZKGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCBoYW5idWYsIDIpOwoJY29tcG9zaW5nX2hhbmd1bCA9IDE7CglndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CglyZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfQ09SUkVDVF9ORVcpCiAgICB7CglpZiAoY29tcG9zaW5nX2hhbmd1bCkKCSAgICBwdXNoX3Jhd19rZXkoaGFuYnVmLCAyKTsKCVNUUk5DUFkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIGhhbmJ1ZisyLCAyKTsKCWNvbXBvc2luZ19oYW5ndWwgPSAxOwoJZ3VpX3VwZGF0ZV9jdXJzb3IoVFJVRSwgRkFMU0UpOwoJcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlIGlmIChuID09IEFVVE9NQVRBX05VTEwpCiAgICB7Cgljb21wb3NpbmdfaGFuZ3VsID0gMDsKCWd1aV9yZWRyYXdfYmxvY2soZ3VpLmN1cnNvcl9yb3csIGd1aS5jdXJzb3JfY29sLAoJCQkgZ3VpLmN1cnNvcl9yb3csIGd1aS5jdXJzb3JfY29sICsgMSwKCQkJIEdVSV9NT05fTk9DTEVBUik7CglndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CglyZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfU1BFQ0lBTCkKICAgIHsKCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJewoJICAgIHB1c2hfcmF3X2tleShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgMik7CgkgICAgY29tcG9zaW5nX2hhbmd1bCA9IDA7Cgl9CgkqcyA9IGM7CglyZXR1cm4gMTsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfRVJST1IpCiAgICB7Cgl2aW1fYmVlcChCT19IQU5HVUwpOwoJcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gbGVuOwp9CgogICAgdm9pZApoYW5ndWxfaW5wdXRfY2xlYXIodm9pZCkKewogICAgc3AgPSAwOwogICAgZiA9IEZfTlVMTDsKICAgIG0gPSBNX05VTEw7CiAgICBsID0gTF9OVUxMOwp9CgojZGVmaW5lIGhhbl9pbmRleChoLCBsKQkoKChoKS0weGIwKSooMHhmZi0weGExKSsoKGwpLTB4YTEpKQoKc3RhdGljIGNvbnN0IGNoYXJfdSBrc190YWJsZTFbXVszXSA9CnsKICAgIHsgIDIsICAzLCAgMX0sIHsgIDIsICAzLCAgMn0sIHsgIDIsICAzLCAgNX0sIHsgIDIsICAzLCAgOH0sCiAgICB7ICAyLCAgMywgIDl9LCB7ICAyLCAgMywgMTB9LCB7ICAyLCAgMywgMTF9LCB7ICAyLCAgMywgMTd9LAogICAgeyAgMiwgIDMsIDE5fSwgeyAgMiwgIDMsIDIwfSwgeyAgMiwgIDMsIDIxfSwgeyAgMiwgIDMsIDIyfSwKICAgIHsgIDIsICAzLCAyM30sIHsgIDIsICAzLCAyNH0sIHsgIDIsICAzLCAyNX0sIHsgIDIsICAzLCAyN30sCiAgICB7ICAyLCAgMywgMjh9LCB7ICAyLCAgMywgMjl9LCB7ICAyLCAgNCwgIDF9LCB7ICAyLCAgNCwgIDJ9LAogICAgeyAgMiwgIDQsICA1fSwgeyAgMiwgIDQsICA5fSwgeyAgMiwgIDQsIDE3fSwgeyAgMiwgIDQsIDE5fSwKICAgIHsgIDIsICA0LCAyMX0sIHsgIDIsICA0LCAyMn0sIHsgIDIsICA0LCAyM30sIHsgIDIsICA1LCAgMX0sCiAgICB7ICAyLCAgNSwgIDJ9LCB7ICAyLCAgNSwgIDV9LCB7ICAyLCAgNSwgIDl9LCB7ICAyLCAgNSwgMjF9LAogICAgeyAgMiwgIDUsIDIzfSwgeyAgMiwgIDYsICAxfSwgeyAgMiwgIDYsICA1fSwgeyAgMiwgIDYsICA5fSwKICAgIHsgIDIsICA3LCAgMX0sIHsgIDIsICA3LCAgMn0sIHsgIDIsICA3LCAgNX0sIHsgIDIsICA3LCAgOH0sCiAgICB7ICAyLCAgNywgIDl9LCB7ICAyLCAgNywgMTF9LCB7ICAyLCAgNywgMTd9LCB7ICAyLCAgNywgMTl9LAogICAgeyAgMiwgIDcsIDIxfSwgeyAgMiwgIDcsIDIyfSwgeyAgMiwgIDcsIDIzfSwgeyAgMiwgIDcsIDI0fSwKICAgIHsgIDIsICA3LCAyN30sIHsgIDIsICA3LCAyOH0sIHsgIDIsICA3LCAyOX0sIHsgIDIsIDEwLCAgMX0sCiAgICB7ICAyLCAxMCwgIDV9LCB7ICAyLCAxMCwgIDl9LCB7ICAyLCAxMCwgMTd9LCB7ICAyLCAxMCwgMTl9LAogICAgeyAgMiwgMTAsIDIxfSwgeyAgMiwgMTAsIDIyfSwgeyAgMiwgMTAsIDIzfSwgeyAgMiwgMTEsICAxfSwKICAgIHsgIDIsIDExLCAgMn0sIHsgIDIsIDExLCAgM30sIHsgIDIsIDExLCAgNX0sIHsgIDIsIDExLCAgOH0sCiAgICB7ICAyLCAxMSwgIDl9LCB7ICAyLCAxMSwgMTd9LCB7ICAyLCAxMSwgMTl9LCB7ICAyLCAxMSwgMjF9LAogICAgeyAgMiwgMTEsIDIyfSwgeyAgMiwgMTEsIDIzfSwgeyAgMiwgMTEsIDI3fSwgeyAgMiwgMTIsICAxfSwKICAgIHsgIDIsIDEyLCAgNX0sIHsgIDIsIDEyLCAgOX0sIHsgIDIsIDEyLCAxOX0sIHsgIDIsIDEyLCAyMX0sCiAgICB7ICAyLCAxMywgIDF9LCB7ICAyLCAxMywgIDJ9LCB7ICAyLCAxMywgIDV9LCB7ICAyLCAxMywgIDh9LAogICAgeyAgMiwgMTMsICA5fSwgeyAgMiwgMTMsIDExfSwgeyAgMiwgMTMsIDEzfSwgeyAgMiwgMTMsIDE2fSwKICAgIHsgIDIsIDEzLCAxN30sIHsgIDIsIDEzLCAxOX0sIHsgIDIsIDEzLCAyMX0sIHsgIDIsIDEzLCAyM30sCiAgICB7ICAyLCAxMywgMjR9LCB7ICAyLCAxNCwgIDF9LCB7ICAyLCAxNCwgIDJ9LCB7ICAyLCAxNCwgIDV9LAogICAgeyAgMiwgMTQsICA5fSwgeyAgMiwgMTQsIDExfSwgeyAgMiwgMTQsIDE3fSwgeyAgMiwgMTQsIDE5fSwKICAgIHsgIDIsIDE0LCAyMX0sIHsgIDIsIDE0LCAyM30sIHsgIDIsIDE1LCAgMX0sIHsgIDIsIDE1LCAgNX0sCiAgICB7ICAyLCAxNSwgIDl9LCB7ICAyLCAxNSwgMTl9LCB7ICAyLCAxNSwgMjJ9LCB7ICAyLCAxNSwgMjN9LAogICAgeyAgMiwgMTgsICAxfSwgeyAgMiwgMTgsICAyfSwgeyAgMiwgMTgsICA1fSwgeyAgMiwgMTgsICA5fSwKICAgIHsgIDIsIDE4LCAxN30sIHsgIDIsIDE4LCAxOX0sIHsgIDIsIDE4LCAyMX0sIHsgIDIsIDE4LCAyM30sCiAgICB7ICAyLCAxOSwgIDF9LCB7ICAyLCAxOSwgIDV9LCB7ICAyLCAxOSwgIDl9LCB7ICAyLCAxOSwgMTl9LAogICAgeyAgMiwgMTksIDIxfSwgeyAgMiwgMjAsICAxfSwgeyAgMiwgMjAsICAyfSwgeyAgMiwgMjAsICA1fSwKICAgIHsgIDIsIDIwLCAgOH0sIHsgIDIsIDIwLCAgOX0sIHsgIDIsIDIwLCAxMH0sIHsgIDIsIDIwLCAxMX0sCiAgICB7ICAyLCAyMCwgMTZ9LCB7ICAyLCAyMCwgMTd9LCB7ICAyLCAyMCwgMTl9LCB7ICAyLCAyMCwgMjF9LAogICAgeyAgMiwgMjAsIDIzfSwgeyAgMiwgMjAsIDI0fSwgeyAgMiwgMjEsICAxfSwgeyAgMiwgMjEsICAyfSwKICAgIHsgIDIsIDIxLCAgNX0sIHsgIDIsIDIxLCAgOX0sIHsgIDIsIDIxLCAyMn0sIHsgIDIsIDIxLCAyM30sCiAgICB7ICAyLCAyMiwgIDF9LCB7ICAyLCAyMiwgMjF9LCB7ICAyLCAyMywgIDF9LCB7ICAyLCAyMywgIDJ9LAogICAgeyAgMiwgMjMsICA1fSwgeyAgMiwgMjMsICA5fSwgeyAgMiwgMjMsIDE3fSwgeyAgMiwgMjMsIDE5fSwKICAgIHsgIDIsIDIzLCAyMX0sIHsgIDIsIDI2LCAgMX0sIHsgIDIsIDI2LCAgNX0sIHsgIDIsIDI2LCAgOX0sCiAgICB7ICAyLCAyNywgIDF9LCB7ICAyLCAyNywgIDJ9LCB7ICAyLCAyNywgIDV9LCB7ICAyLCAyNywgIDh9LAogICAgeyAgMiwgMjcsICA5fSwgeyAgMiwgMjcsIDEwfSwgeyAgMiwgMjcsIDE3fSwgeyAgMiwgMjcsIDE5fSwKICAgIHsgIDIsIDI3LCAyMX0sIHsgIDIsIDI3LCAyM30sIHsgIDIsIDI4LCAgMX0sIHsgIDIsIDI5LCAgMX0sCiAgICB7ICAyLCAyOSwgIDJ9LCB7ICAyLCAyOSwgIDV9LCB7ICAyLCAyOSwgIDh9LCB7ICAyLCAyOSwgIDl9LAogICAgeyAgMiwgMjksIDExfSwgeyAgMiwgMjksIDE3fSwgeyAgMiwgMjksIDE5fSwgeyAgMiwgMjksIDIxfSwKICAgIHsgIDIsIDI5LCAyM30sIHsgIDIsIDI5LCAyNH0sIHsgIDIsIDI5LCAyOH0sIHsgIDMsICAzLCAgMX0sCiAgICB7ICAzLCAgMywgIDJ9LCB7ICAzLCAgMywgIDN9LCB7ICAzLCAgMywgIDV9LCB7ICAzLCAgMywgIDl9LAogICAgeyAgMywgIDMsIDExfSwgeyAgMywgIDMsIDE3fSwgeyAgMywgIDMsIDE5fSwgeyAgMywgIDMsIDIxfSwKICAgIHsgIDMsICAzLCAyMn0sIHsgIDMsICAzLCAyM30sIHsgIDMsICAzLCAyN30sIHsgIDMsICA0LCAgMX0sCiAgICB7ICAzLCAgNCwgIDJ9LCB7ICAzLCAgNCwgIDV9LCB7ICAzLCAgNCwgIDl9LCB7ICAzLCAgNCwgMTd9LAogICAgeyAgMywgIDQsIDE5fSwgeyAgMywgIDQsIDIxfSwgeyAgMywgIDQsIDIyfSwgeyAgMywgIDQsIDIzfSwKICAgIHsgIDMsICA1LCAgMX0sIHsgIDMsICA1LCAgMn0sIHsgIDMsICA1LCAgOX0sIHsgIDMsICA3LCAgMX0sCiAgICB7ICAzLCAgNywgIDJ9LCB7ICAzLCAgNywgIDN9LCB7ICAzLCAgNywgIDV9LCB7ICAzLCAgNywgIDl9LAogICAgeyAgMywgIDcsIDE3fSwgeyAgMywgIDcsIDE5fSwgeyAgMywgIDcsIDIxfSwgeyAgMywgIDcsIDIyfSwKICAgIHsgIDMsICA3LCAyM30sIHsgIDMsIDEwLCAgMX0sIHsgIDMsIDEwLCAgMn0sIHsgIDMsIDEwLCAgNX0sCiAgICB7ICAzLCAxMCwgMTd9LCB7ICAzLCAxMCwgMjF9LCB7ICAzLCAxMCwgMjN9LCB7ICAzLCAxMSwgIDF9LAogICAgeyAgMywgMTEsICA1fSwgeyAgMywgMTEsICA5fSwgeyAgMywgMTEsIDIxfSwgeyAgMywgMTEsIDIyfSwKICAgIHsgIDMsIDExLCAyN30sIHsgIDMsIDEyLCAgMX0sIHsgIDMsIDEzLCAgMX0sIHsgIDMsIDEzLCAgMn0sCiAgICB7ICAzLCAxMywgIDV9LCB7ICAzLCAxMywgIDd9LCB7ICAzLCAxMywgIDl9LCB7ICAzLCAxMywgMTd9LAogICAgeyAgMywgMTMsIDE5fSwgeyAgMywgMTMsIDIxfSwgeyAgMywgMTMsIDIzfSwgeyAgMywgMTMsIDI0fSwKICAgIHsgIDMsIDEzLCAyNX0sIHsgIDMsIDE0LCAgMX0sIHsgIDMsIDE0LCAgMn0sIHsgIDMsIDE0LCAgOX0sCiAgICB7ICAzLCAxNCwgMjJ9LCB7ICAzLCAxNCwgMjN9LCB7ICAzLCAxNSwgIDF9LCB7ICAzLCAxNSwgIDJ9LAogICAgeyAgMywgMTUsIDIzfSwgeyAgMywgMTgsICAxfSwgeyAgMywgMTgsICA1fSwgeyAgMywgMTgsICA5fSwKICAgIHsgIDMsIDE4LCAxN30sIHsgIDMsIDE4LCAxOX0sIHsgIDMsIDE4LCAyM30sIHsgIDMsIDE5LCAgMX0sCiAgICB7ICAzLCAyMCwgIDF9LCB7ICAzLCAyMCwgIDJ9LCB7ICAzLCAyMCwgIDV9LCB7ICAzLCAyMCwgIDl9LAogICAgeyAgMywgMjAsIDE2fSwgeyAgMywgMjAsIDE3fSwgeyAgMywgMjAsIDE5fSwgeyAgMywgMjAsIDIxfSwKICAgIHsgIDMsIDIwLCAyM30sIHsgIDMsIDIwLCAyNH0sIHsgIDMsIDIxLCAgMX0sIHsgIDMsIDIxLCAgOX0sCiAgICB7ICAzLCAyMSwgMjJ9LCB7ICAzLCAyMSwgMjN9LCB7ICAzLCAyMiwgIDF9LCB7ICAzLCAyMiwgIDJ9LAogICAgeyAgMywgMjIsICA1fSwgeyAgMywgMjIsICA5fSwgeyAgMywgMjIsIDE3fSwgeyAgMywgMjIsIDE5fSwKICAgIHsgIDMsIDIyLCAyMn0sIHsgIDMsIDIzLCAgMX0sIHsgIDMsIDIzLCAgNX0sIHsgIDMsIDIzLCAgOX0sCiAgICB7ICAzLCAyMywgMTd9LCB7ICAzLCAyMywgMTl9LCB7ICAzLCAyNiwgIDF9LCB7ICAzLCAyNywgIDF9LAogICAgeyAgMywgMjcsICAyfSwgeyAgMywgMjcsICA1fSwgeyAgMywgMjcsICA3fSwgeyAgMywgMjcsICA5fSwKICAgIHsgIDMsIDI3LCAxMX0sIHsgIDMsIDI3LCAxNn0sIHsgIDMsIDI3LCAxN30sIHsgIDMsIDI3LCAxOX0sCiAgICB7ICAzLCAyNywgMjF9LCB7ICAzLCAyNywgMjN9LCB7ICAzLCAyNywgMjd9LCB7ICAzLCAyOSwgIDF9LAogICAgeyAgMywgMjksICAyfSwgeyAgMywgMjksICA1fSwgeyAgMywgMjksICA5fSwgeyAgMywgMjksIDE3fSwKICAgIHsgIDMsIDI5LCAxOX0sIHsgIDMsIDI5LCAyMX0sIHsgIDMsIDI5LCAyM30sIHsgIDQsICAzLCAgMX0sCiAgICB7ICA0LCAgMywgIDJ9LCB7ICA0LCAgMywgIDN9LCB7ICA0LCAgMywgIDV9LCB7ICA0LCAgMywgIDh9LAogICAgeyAgNCwgIDMsICA5fSwgeyAgNCwgIDMsIDEwfSwgeyAgNCwgIDMsIDExfSwgeyAgNCwgIDMsIDE3fSwKICAgIHsgIDQsICAzLCAxOX0sIHsgIDQsICAzLCAyMX0sIHsgIDQsICAzLCAyMn0sIHsgIDQsICAzLCAyM30sCiAgICB7ICA0LCAgMywgMjR9LCB7ICA0LCAgMywgMjV9LCB7ICA0LCAgMywgMjd9LCB7ICA0LCAgMywgMjl9LAogICAgeyAgNCwgIDQsICAxfSwgeyAgNCwgIDQsICAyfSwgeyAgNCwgIDQsICA1fSwgeyAgNCwgIDQsICA5fSwKICAgIHsgIDQsICA0LCAxN30sIHsgIDQsICA0LCAxOX0sIHsgIDQsICA0LCAyMX0sIHsgIDQsICA0LCAyMn0sCiAgICB7ICA0LCAgNCwgMjN9LCB7ICA0LCAgNSwgIDF9LCB7ICA0LCAgNSwgIDJ9LCB7ICA0LCAgNSwgIDV9LAogICAgeyAgNCwgIDUsICA5fSwgeyAgNCwgIDUsIDE3fSwgeyAgNCwgIDUsIDIzfSwgeyAgNCwgIDcsICAxfSwKICAgIHsgIDQsICA3LCAgMn0sIHsgIDQsICA3LCAgNH0sIHsgIDQsICA3LCAgNX0sIHsgIDQsICA3LCAgOX0sCiAgICB7ICA0LCAgNywgMTF9LCB7ICA0LCAgNywgMTJ9LCB7ICA0LCAgNywgMTd9LCB7ICA0LCAgNywgMTl9LAogICAgeyAgNCwgIDcsIDIxfSwgeyAgNCwgIDcsIDIyfSwgeyAgNCwgIDcsIDIzfSwgeyAgNCwgIDcsIDI5fSwKICAgIHsgIDQsIDEwLCAgMX0sIHsgIDQsIDEwLCAgMn0sIHsgIDQsIDEwLCAgNX0sIHsgIDQsIDEwLCAgOX0sCiAgICB7ICA0LCAxMCwgMTd9LCB7ICA0LCAxMCwgMTl9LCB7ICA0LCAxMCwgMjF9LCB7ICA0LCAxMCwgMjJ9LAogICAgeyAgNCwgMTAsIDIzfSwgeyAgNCwgMTEsICAxfSwgeyAgNCwgMTEsICAyfSwgeyAgNCwgMTEsICA1fSwKICAgIHsgIDQsIDExLCAgOX0sIHsgIDQsIDExLCAxN30sIHsgIDQsIDExLCAxOX0sIHsgIDQsIDExLCAyMn0sCiAgICB7ICA0LCAxMSwgMjN9LCB7ICA0LCAxMSwgMjZ9LCB7ICA0LCAxMiwgIDF9LCB7ICA0LCAxMiwgIDV9LAogICAgeyAgNCwgMTMsICAxfSwgeyAgNCwgMTMsICAyfSwgeyAgNCwgMTMsICA1fSwgeyAgNCwgMTMsICA5fSwKICAgIHsgIDQsIDEzLCAxMX0sIHsgIDQsIDEzLCAxN30sIHsgIDQsIDEzLCAxOX0sIHsgIDQsIDEzLCAyMX0sCiAgICB7ICA0LCAxMywgMjN9LCB7ICA0LCAxMywgMjh9LCB7ICA0LCAxMywgMjl9LCB7ICA0LCAxNCwgIDF9LAogICAgeyAgNCwgMTQsICA1fSwgeyAgNCwgMTQsICA5fSwgeyAgNCwgMTQsIDIyfSwgeyAgNCwgMTgsICAxfSwKICAgIHsgIDQsIDE4LCAgNX0sIHsgIDQsIDE4LCAgOX0sIHsgIDQsIDE4LCAxN30sIHsgIDQsIDE4LCAxOX0sCiAgICB7ICA0LCAxOCwgMjF9LCB7ICA0LCAxOSwgIDF9LCB7ICA0LCAxOSwgIDJ9LCB7ICA0LCAxOSwgIDV9LAogICAgeyAgNCwgMTksICA5fSwgeyAgNCwgMTksIDE5fSwgeyAgNCwgMTksIDIxfSwgeyAgNCwgMTksIDIzfSwKICAgIHsgIDQsIDIwLCAgMX0sIHsgIDQsIDIwLCAgMn0sIHsgIDQsIDIwLCAgNX0sIHsgIDQsIDIwLCAgOH0sCiAgICB7ICA0LCAyMCwgIDl9LCB7ICA0LCAyMCwgMTd9LCB7ICA0LCAyMCwgMTl9LCB7ICA0LCAyMCwgMjF9LAogICAgeyAgNCwgMjAsIDIzfSwgeyAgNCwgMjEsICAxfSwgeyAgNCwgMjEsIDIyfSwgeyAgNCwgMjIsICAxfSwKICAgIHsgIDQsIDIzLCAgMX0sIHsgIDQsIDIzLCAgNX0sIHsgIDQsIDIzLCAgOX0sIHsgIDQsIDIzLCAxN30sCiAgICB7ICA0LCAyMywgMTl9LCB7ICA0LCAyNiwgIDF9LCB7ICA0LCAyNiwgIDJ9LCB7ICA0LCAyNiwgIDl9LAogICAgeyAgNCwgMjYsIDE3fSwgeyAgNCwgMjYsIDE5fSwgeyAgNCwgMjYsIDIzfSwgeyAgNCwgMjcsICAxfSwKICAgIHsgIDQsIDI3LCAgMn0sIHsgIDQsIDI3LCAgNX0sIHsgIDQsIDI3LCAgOX0sIHsgIDQsIDI3LCAxMH0sCiAgICB7ICA0LCAyNywgMTF9LCB7ICA0LCAyNywgMTd9LCB7ICA0LCAyNywgMTl9LCB7ICA0LCAyNywgMjF9LAogICAgeyAgNCwgMjcsIDIzfSwgeyAgNCwgMjcsIDI0fSwgeyAgNCwgMjcsIDI4fSwgeyAgNCwgMjgsICAxfSwKICAgIHsgIDQsIDI4LCAgNX0sIHsgIDQsIDI4LCAgOX0sIHsgIDQsIDI5LCAgMX0sIHsgIDQsIDI5LCAgMn0sCiAgICB7ICA0LCAyOSwgIDV9LCB7ICA0LCAyOSwgIDl9LCB7ICA0LCAyOSwgMTF9LCB7ICA0LCAyOSwgMTd9LAogICAgeyAgNCwgMjksIDE5fSwgeyAgNCwgMjksIDIxfSwgeyAgNCwgMjksIDIzfSwgeyAgNCwgMjksIDI4fSwKICAgIHsgIDUsICAzLCAgMX0sIHsgIDUsICAzLCAgMn0sIHsgIDUsICAzLCAgM30sIHsgIDUsICAzLCAgNX0sCiAgICB7ICA1LCAgMywgIDh9LCB7ICA1LCAgMywgIDl9LCB7ICA1LCAgMywgMTB9LCB7ICA1LCAgMywgMTF9LAogICAgeyAgNSwgIDMsIDEyfSwgeyAgNSwgIDMsIDE2fSwgeyAgNSwgIDMsIDE3fSwgeyAgNSwgIDMsIDE5fSwKICAgIHsgIDUsICAzLCAyMX0sIHsgIDUsICAzLCAyMn0sIHsgIDUsICAzLCAyM30sIHsgIDUsICAzLCAyNH0sCiAgICB7ICA1LCAgMywgMjV9LCB7ICA1LCAgMywgMjl9LCB7ICA1LCAgNCwgIDF9LCB7ICA1LCAgNCwgIDJ9LAogICAgeyAgNSwgIDQsICA1fSwgeyAgNSwgIDQsICA5fSwgeyAgNSwgIDQsIDE3fSwgeyAgNSwgIDQsIDE5fSwKICAgIHsgIDUsICA0LCAyMX0sIHsgIDUsICA0LCAyMn0sIHsgIDUsICA0LCAyM30sIHsgIDUsICA1LCAgMX0sCiAgICB7ICA1LCAgNywgIDF9LCB7ICA1LCAgNywgIDJ9LCB7ICA1LCAgNywgIDN9LCB7ICA1LCAgNywgIDV9LAogICAgeyAgNSwgIDcsICA4fSwgeyAgNSwgIDcsICA5fSwgeyAgNSwgIDcsIDExfSwgeyAgNSwgIDcsIDEyfSwKICAgIHsgIDUsICA3LCAxN30sIHsgIDUsICA3LCAxOX0sIHsgIDUsICA3LCAyMX0sIHsgIDUsICA3LCAyM30sCiAgICB7ICA1LCAgNywgMjV9LCB7ICA1LCAgNywgMjh9LCB7ICA1LCAxMCwgIDF9LCB7ICA1LCAxMCwgIDJ9LAogICAgeyAgNSwgMTAsICA1fSwgeyAgNSwgMTAsICA5fSwgeyAgNSwgMTAsIDE3fSwgeyAgNSwgMTAsIDE5fSwKICAgIHsgIDUsIDEwLCAyMX0sIHsgIDUsIDEwLCAyMn0sIHsgIDUsIDEwLCAyM30sIHsgIDUsIDExLCAgMX0sCiAgICB7ICA1LCAxMSwgIDV9LCB7ICA1LCAxMSwgIDl9LCB7ICA1LCAxMSwgMjJ9LCB7ICA1LCAxMSwgMjN9LAogICAgeyAgNSwgMTIsICAxfSwgeyAgNSwgMTIsICA1fSwgeyAgNSwgMTMsICAxfSwgeyAgNSwgMTMsICAyfSwKICAgIHsgIDUsIDEzLCAgNX0sIHsgIDUsIDEzLCAgOH0sIHsgIDUsIDEzLCAgOX0sIHsgIDUsIDEzLCAxMX0sCiAgICB7ICA1LCAxMywgMTN9LCB7ICA1LCAxMywgMTd9LCB7ICA1LCAxMywgMTl9LCB7ICA1LCAxMywgMjF9LAogICAgeyAgNSwgMTMsIDIzfSwgeyAgNSwgMTMsIDI1fSwgeyAgNSwgMTMsIDI3fSwgeyAgNSwgMTQsICAxfSwKICAgIHsgIDUsIDE0LCAgNX0sIHsgIDUsIDE0LCAgOX0sIHsgIDUsIDE1LCAgMX0sIHsgIDUsIDE1LCAyMn0sCiAgICB7ICA1LCAxOCwgIDF9LCB7ICA1LCAxOCwgIDV9LCB7ICA1LCAxOCwgIDl9LCB7ICA1LCAxOCwgMTd9LAogICAgeyAgNSwgMTgsIDE5fSwgeyAgNSwgMTgsIDIxfSwgeyAgNSwgMTksICAxfSwgeyAgNSwgMjAsICAxfSwKICAgIHsgIDUsIDIwLCAgMn0sIHsgIDUsIDIwLCAgNX0sIHsgIDUsIDIwLCAgOX0sIHsgIDUsIDIwLCAxN30sCiAgICB7ICA1LCAyMCwgMTl9LCB7ICA1LCAyMCwgMjF9LCB7ICA1LCAyMCwgMjN9LCB7ICA1LCAyMSwgIDF9LAogICAgeyAgNSwgMjEsIDIyfSwgeyAgNSwgMjIsICAxfSwgeyAgNSwgMjIsIDIzfSwgeyAgNSwgMjMsICAxfSwKICAgIHsgIDUsIDIzLCAgNX0sIHsgIDUsIDIzLCAgOX0sIHsgIDUsIDIzLCAxOX0sIHsgIDUsIDIzLCAyMX0sCiAgICB7ICA1LCAyMywgMjN9LCB7ICA1LCAyNiwgIDF9LCB7ICA1LCAyNiwgIDV9LCB7ICA1LCAyNiwgIDl9LAogICAgeyAgNSwgMjYsIDE3fSwgeyAgNSwgMjYsIDIzfSwgeyAgNSwgMjcsICAxfSwgeyAgNSwgMjcsICAyfSwKICAgIHsgIDUsIDI3LCAgNX0sIHsgIDUsIDI3LCAgOH0sIHsgIDUsIDI3LCAgOX0sIHsgIDUsIDI3LCAxMX0sCiAgICB7ICA1LCAyNywgMTd9LCB7ICA1LCAyNywgMTl9LCB7ICA1LCAyNywgMjF9LCB7ICA1LCAyNywgMjN9LAogICAgeyAgNSwgMjgsICAxfSwgeyAgNSwgMjksICAxfSwgeyAgNSwgMjksICAyfSwgeyAgNSwgMjksICA1fSwKICAgIHsgIDUsIDI5LCAgOH0sIHsgIDUsIDI5LCAgOX0sIHsgIDUsIDI5LCAxN30sIHsgIDUsIDI5LCAxOX0sCiAgICB7ICA1LCAyOSwgMjF9LCB7ICA1LCAyOSwgMjJ9LCB7ICA1LCAyOSwgMjN9LCB7ICA1LCAyOSwgMjR9LAogICAgeyAgNiwgIDMsICAxfSwgeyAgNiwgIDMsICAyfSwgeyAgNiwgIDMsICA1fSwgeyAgNiwgIDMsICA5fSwKICAgIHsgIDYsICAzLCAxN30sIHsgIDYsICAzLCAxOX0sIHsgIDYsICAzLCAyMX0sIHsgIDYsICAzLCAyMn0sCiAgICB7ICA2LCAgMywgMjN9LCB7ICA2LCAgMywgMjl9LCB7ICA2LCAgNCwgIDF9LCB7ICA2LCAgNCwgIDJ9LAogICAgeyAgNiwgIDQsICA1fSwgeyAgNiwgIDQsICA5fSwgeyAgNiwgIDQsIDE3fSwgeyAgNiwgIDQsIDE5fSwKICAgIHsgIDYsICA0LCAyMX0sIHsgIDYsICA0LCAyMn0sIHsgIDYsICA0LCAyM30sIHsgIDYsICA3LCAgMX0sCiAgICB7ICA2LCAgNywgIDJ9LCB7ICA2LCAgNywgIDV9LCB7ICA2LCAgNywgIDl9LCB7ICA2LCAgNywgMTF9LAogICAgeyAgNiwgIDcsIDEyfSwgeyAgNiwgIDcsIDE3fSwgeyAgNiwgIDcsIDE5fSwgeyAgNiwgIDcsIDIxfSwKICAgIHsgIDYsICA3LCAyMn0sIHsgIDYsICA3LCAyM30sIHsgIDYsICA3LCAyOX0sIHsgIDYsIDEwLCAgMX0sCiAgICB7ICA2LCAxMCwgIDJ9LCB7ICA2LCAxMCwgIDV9LCB7ICA2LCAxMCwgIDl9LCB7ICA2LCAxMCwgMTd9LAogICAgeyAgNiwgMTAsIDE5fSwgeyAgNiwgMTAsIDIxfSwgeyAgNiwgMTAsIDIyfSwgeyAgNiwgMTAsIDIzfSwKICAgIHsgIDYsIDExLCAgMX0sIHsgIDYsIDExLCAyMn0sIHsgIDYsIDEzLCAgMX0sIHsgIDYsIDEzLCAgMn0sCiAgICB7ICA2LCAxMywgIDV9LCB7ICA2LCAxMywgIDl9LCB7ICA2LCAxMywgMjN9LCB7ICA2LCAxNCwgIDF9LAogICAgeyAgNiwgMTQsICA5fSwgeyAgNiwgMTUsICAxfSwgeyAgNiwgMTgsICAxfSwgeyAgNiwgMTgsICA1fSwKICAgIHsgIDYsIDIwLCAgMX0sIHsgIDYsIDIwLCAgMn0sIHsgIDYsIDIwLCAgNX0sIHsgIDYsIDIwLCAgOX0sCiAgICB7ICA2LCAyMCwgMTZ9LCB7ICA2LCAyMCwgMTd9LCB7ICA2LCAyMCwgMjN9LCB7ICA2LCAyMiwgIDF9LAogICAgeyAgNiwgMjMsICAxfSwgeyAgNiwgMjMsICA1fSwgeyAgNiwgMjMsICA5fSwgeyAgNiwgMjMsIDE3fSwKICAgIHsgIDYsIDIzLCAxOX0sIHsgIDYsIDIzLCAyM30sIHsgIDYsIDI3LCAgMX0sIHsgIDYsIDI3LCAgMn0sCiAgICB7ICA2LCAyNywgIDV9LCB7ICA2LCAyNywgIDh9LCB7ICA2LCAyNywgIDl9LCB7ICA2LCAyNywgMTd9LAogICAgeyAgNiwgMjcsIDE5fSwgeyAgNiwgMjcsIDIxfSwgeyAgNiwgMjgsICAxfSwgeyAgNiwgMjgsICA1fSwKICAgIHsgIDYsIDI4LCAgOX0sIHsgIDYsIDI4LCAxN30sIHsgIDYsIDI4LCAxOX0sIHsgIDYsIDI5LCAgMX0sCiAgICB7ICA2LCAyOSwgIDV9LCB7ICA2LCAyOSwgIDl9LCB7ICA2LCAyOSwgMTd9LCB7ICA2LCAyOSwgMTl9LAogICAgeyAgNiwgMjksIDIxfSwgeyAgNiwgMjksIDIzfSwgeyAgNywgIDMsICAxfSwgeyAgNywgIDMsICAyfSwKICAgIHsgIDcsICAzLCAgNX0sIHsgIDcsICAzLCAgOX0sIHsgIDcsICAzLCAxN30sIHsgIDcsICAzLCAxOX0sCiAgICB7ICA3LCAgMywgMjF9LCB7ICA3LCAgMywgMjJ9LCB7ICA3LCAgMywgMjN9LCB7ICA3LCAgMywgMjR9LAogICAgeyAgNywgIDMsIDI4fSwgeyAgNywgIDMsIDI5fSwgeyAgNywgIDQsICAxfSwgeyAgNywgIDQsICAyfSwKICAgIHsgIDcsICA0LCAgNX0sIHsgIDcsICA0LCAgOX0sIHsgIDcsICA0LCAxN30sIHsgIDcsICA0LCAxOX0sCiAgICB7ICA3LCAgNCwgMjF9LCB7ICA3LCAgNCwgMjJ9LCB7ICA3LCAgNCwgMjN9LCB7ICA3LCAgNSwgIDF9LAogICAgeyAgNywgIDUsICAyfSwgeyAgNywgIDUsICA1fSwgeyAgNywgIDUsIDIxfSwgeyAgNywgIDUsIDIzfSwKICAgIHsgIDcsICA3LCAgMX0sIHsgIDcsICA3LCAgMn0sIHsgIDcsICA3LCAgNX0sIHsgIDcsICA3LCAgOX0sCiAgICB7ICA3LCAgNywgMTd9LCB7ICA3LCAgNywgMTl9LCB7ICA3LCAgNywgMjF9LCB7ICA3LCAgNywgMjJ9LAogICAgeyAgNywgIDcsIDIzfSwgeyAgNywgIDcsIDI5fSwgeyAgNywgMTAsICAxfSwgeyAgNywgMTAsICAyfSwKICAgIHsgIDcsIDEwLCAgNX0sIHsgIDcsIDEwLCAgOX0sIHsgIDcsIDEwLCAxN30sIHsgIDcsIDEwLCAxOX0sCiAgICB7ICA3LCAxMCwgMjF9LCB7ICA3LCAxMCwgMjN9LCB7ICA3LCAxMSwgIDF9LCB7ICA3LCAxMSwgIDJ9LAogICAgeyAgNywgMTEsICA1fSwgeyAgNywgMTEsICA5fSwgeyAgNywgMTEsIDE3fSwgeyAgNywgMTEsIDE5fSwKICAgIHsgIDcsIDExLCAyMX0sIHsgIDcsIDExLCAyMn0sIHsgIDcsIDExLCAyM30sIHsgIDcsIDEyLCAgMX0sCiAgICB7ICA3LCAxMiwgIDV9LCB7ICA3LCAxMiwgMTl9LCB7ICA3LCAxMiwgMjF9LCB7ICA3LCAxMywgIDF9LAogICAgeyAgNywgMTMsICAyfSwgeyAgNywgMTMsICA1fSwgeyAgNywgMTMsICA5fSwgeyAgNywgMTMsIDE3fSwKICAgIHsgIDcsIDEzLCAxOX0sIHsgIDcsIDEzLCAyMX0sIHsgIDcsIDEzLCAyM30sIHsgIDcsIDE0LCAgMX0sCiAgICB7ICA3LCAxNCwgIDV9LCB7ICA3LCAxNCwgMjN9LCB7ICA3LCAxNSwgMjJ9LCB7ICA3LCAxOCwgIDF9LAogICAgeyAgNywgMTgsICA1fSwgeyAgNywgMTgsICA5fSwgeyAgNywgMTgsIDE3fSwgeyAgNywgMTgsIDE5fSwKICAgIHsgIDcsIDE4LCAyMX0sIHsgIDcsIDE4LCAyM30sIHsgIDcsIDE5LCAgMX0sIHsgIDcsIDE5LCAgNX0sCiAgICB7ICA3LCAxOSwgIDl9LCB7ICA3LCAxOSwgMTl9LCB7ICA3LCAxOSwgMjF9LCB7ICA3LCAxOSwgMjN9LAogICAgeyAgNywgMjAsICAxfSwgeyAgNywgMjAsICAyfSwgeyAgNywgMjAsICA1fSwgeyAgNywgMjAsICA5fSwKICAgIHsgIDcsIDIwLCAxN30sIHsgIDcsIDIwLCAxOX0sIHsgIDcsIDIwLCAyMX0sIHsgIDcsIDIwLCAyM30sCiAgICB7ICA3LCAyMSwgIDF9LCB7ICA3LCAyMSwgMjJ9LCB7ICA3LCAyMiwgIDF9LCB7ICA3LCAyMywgIDF9LAogICAgeyAgNywgMjMsICAyfSwgeyAgNywgMjMsICA1fSwgeyAgNywgMjMsICA5fSwgeyAgNywgMjMsIDE3fSwKICAgIHsgIDcsIDIzLCAyMX0sIHsgIDcsIDIzLCAyM30sIHsgIDcsIDI2LCAgMX0sIHsgIDcsIDI2LCAgMn0sCiAgICB7ICA3LCAyNiwgIDV9LCB7ICA3LCAyNiwgIDl9LCB7ICA3LCAyNiwgMTd9LCB7ICA3LCAyNiwgMTl9LAogICAgeyAgNywgMjYsIDIxfSwgeyAgNywgMjYsIDIzfSwgeyAgNywgMjcsICAxfSwgeyAgNywgMjcsICAyfSwKICAgIHsgIDcsIDI3LCAgNX0sIHsgIDcsIDI3LCAgOX0sIHsgIDcsIDI3LCAxN30sIHsgIDcsIDI3LCAxOX0sCiAgICB7ICA3LCAyNywgMjF9LCB7ICA3LCAyNywgMjN9LCB7ICA3LCAyNywgMjR9LCB7ICA3LCAyNywgMjd9LAogICAgeyAgNywgMjcsIDI4fSwgeyAgNywgMjksICAxfSwgeyAgNywgMjksICAyfSwgeyAgNywgMjksICA1fSwKICAgIHsgIDcsIDI5LCAgOX0sIHsgIDcsIDI5LCAxN30sIHsgIDcsIDI5LCAxOX0sIHsgIDcsIDI5LCAyMX0sCiAgICB7ICA3LCAyOSwgMjN9LCB7ICA4LCAgMywgIDF9LCB7ICA4LCAgMywgIDJ9LCB7ICA4LCAgMywgIDV9LAogICAgeyAgOCwgIDMsICA3fSwgeyAgOCwgIDMsICA4fSwgeyAgOCwgIDMsICA5fSwgeyAgOCwgIDMsIDEwfSwKICAgIHsgIDgsICAzLCAxMX0sIHsgIDgsICAzLCAxN30sIHsgIDgsICAzLCAxOX0sIHsgIDgsICAzLCAyMX0sCiAgICB7ICA4LCAgMywgMjN9LCB7ICA4LCAgMywgMjR9LCB7ICA4LCAgMywgMjd9LCB7ICA4LCAgMywgMjl9LAogICAgeyAgOCwgIDQsICAxfSwgeyAgOCwgIDQsICAyfSwgeyAgOCwgIDQsICA1fSwgeyAgOCwgIDQsICA5fSwKICAgIHsgIDgsICA0LCAxN30sIHsgIDgsICA0LCAxOX0sIHsgIDgsICA0LCAyMX0sIHsgIDgsICA0LCAyMn0sCiAgICB7ICA4LCAgNCwgMjN9LCB7ICA4LCAgNCwgMjR9LCB7ICA4LCAgNSwgIDF9LCB7ICA4LCAgNSwgIDJ9LAogICAgeyAgOCwgIDUsICA5fSwgeyAgOCwgIDUsIDIzfSwgeyAgOCwgIDcsICAxfSwgeyAgOCwgIDcsICAyfSwKICAgIHsgIDgsICA3LCAgNX0sIHsgIDgsICA3LCAgOX0sIHsgIDgsICA3LCAxMX0sIHsgIDgsICA3LCAxN30sCiAgICB7ICA4LCAgNywgMTl9LCB7ICA4LCAgNywgMjF9LCB7ICA4LCAgNywgMjN9LCB7ICA4LCAgNywgMjR9LAogICAgeyAgOCwgIDcsIDI5fSwgeyAgOCwgMTAsICAxfSwgeyAgOCwgMTAsICAyfSwgeyAgOCwgMTAsICA1fSwKICAgIHsgIDgsIDEwLCAgOX0sIHsgIDgsIDEwLCAxN30sIHsgIDgsIDEwLCAxOX0sIHsgIDgsIDEwLCAyMX0sCiAgICB7ICA4LCAxMCwgMjJ9LCB7ICA4LCAxMCwgMjN9LCB7ICA4LCAxMSwgIDF9LCB7ICA4LCAxMSwgIDJ9LAogICAgeyAgOCwgMTEsICA1fSwgeyAgOCwgMTEsICA5fSwgeyAgOCwgMTEsIDIxfSwgeyAgOCwgMTEsIDIyfSwKICAgIHsgIDgsIDExLCAyM30sIHsgIDgsIDExLCAyNX0sIHsgIDgsIDEyLCAgMX0sIHsgIDgsIDEzLCAgMX0sCiAgICB7ICA4LCAxMywgIDJ9LCB7ICA4LCAxMywgIDR9LCB7ICA4LCAxMywgIDV9LCB7ICA4LCAxMywgIDl9LAogICAgeyAgOCwgMTMsIDExfSwgeyAgOCwgMTMsIDE3fSwgeyAgOCwgMTMsIDE5fSwgeyAgOCwgMTMsIDIxfSwKICAgIHsgIDgsIDEzLCAyM30sIHsgIDgsIDE0LCAgMX0sIHsgIDgsIDE0LCAgNX0sIHsgIDgsIDE0LCAyMn0sCiAgICB7ICA4LCAxNCwgMjN9LCB7ICA4LCAxOCwgIDF9LCB7ICA4LCAxOCwgIDV9LCB7ICA4LCAxOCwgIDl9LAogICAgeyAgOCwgMTgsIDE5fSwgeyAgOCwgMTgsIDIxfSwgeyAgOCwgMTgsIDIzfSwgeyAgOCwgMTksICAxfSwKICAgIHsgIDgsIDE5LCAgNX0sIHsgIDgsIDE5LCAgOX0sIHsgIDgsIDE5LCAxOX0sIHsgIDgsIDE5LCAyMX0sCiAgICB7ICA4LCAyMCwgIDF9LCB7ICA4LCAyMCwgIDJ9LCB7ICA4LCAyMCwgIDN9LCB7ICA4LCAyMCwgIDV9LAogICAgeyAgOCwgMjAsICA4fSwgeyAgOCwgMjAsICA5fSwgeyAgOCwgMjAsIDEwfSwgeyAgOCwgMjAsIDExfSwKICAgIHsgIDgsIDIwLCAxN30sIHsgIDgsIDIwLCAxOX0sIHsgIDgsIDIwLCAyMX0sIHsgIDgsIDIwLCAyM30sCiAgICB7ICA4LCAyMCwgMjd9LCB7ICA4LCAyMCwgMjl9LCB7ICA4LCAyMSwgIDF9LCB7ICA4LCAyMSwgIDV9LAogICAgeyAgOCwgMjEsICA5fSwgeyAgOCwgMjEsIDE5fSwgeyAgOCwgMjEsIDIxfSwgeyAgOCwgMjIsICAxfSwKICAgIHsgIDgsIDIzLCAgMX0sIHsgIDgsIDIzLCAgNX0sIHsgIDgsIDIzLCAgOX0sIHsgIDgsIDI2LCAgMX0sCiAgICB7ICA4LCAyNiwgIDV9LCB7ICA4LCAyNiwgIDl9LCB7ICA4LCAyNiwgMTd9LCB7ICA4LCAyNiwgMjF9LAogICAgeyAgOCwgMjcsICAxfSwgeyAgOCwgMjcsICA1fSwgeyAgOCwgMjcsICA5fSwgeyAgOCwgMjcsIDE3fSwKICAgIHsgIDgsIDI3LCAyMX0sIHsgIDgsIDI5LCAgMX0sIHsgIDgsIDI5LCAgMn0sIHsgIDgsIDI5LCAgNX0sCiAgICB7ICA4LCAyOSwgIDh9LCB7ICA4LCAyOSwgIDl9LCB7ICA4LCAyOSwgMTF9LCB7ICA4LCAyOSwgMTd9LAogICAgeyAgOCwgMjksIDE5fSwgeyAgOCwgMjksIDIxfSwgeyAgOCwgMjksIDIyfSwgeyAgOCwgMjksIDIzfSwKICAgIHsgIDgsIDI5LCAyNX0sIHsgIDgsIDI5LCAyN30sIHsgIDksICAzLCAgMX0sIHsgIDksICAzLCAgMn0sCiAgICB7ICA5LCAgMywgIDN9LCB7ICA5LCAgMywgIDR9LCB7ICA5LCAgMywgIDV9LCB7ICA5LCAgMywgIDh9LAogICAgeyAgOSwgIDMsICA5fSwgeyAgOSwgIDMsIDEwfSwgeyAgOSwgIDMsIDExfSwgeyAgOSwgIDMsIDEyfSwKICAgIHsgIDksICAzLCAxN30sIHsgIDksICAzLCAxOX0sIHsgIDksICAzLCAyMX0sIHsgIDksICAzLCAyM30sCiAgICB7ICA5LCAgMywgMjd9LCB7ICA5LCAgNCwgIDF9LCB7ICA5LCAgNCwgIDJ9LCB7ICA5LCAgNCwgIDV9LAogICAgeyAgOSwgIDQsICA5fSwgeyAgOSwgIDQsIDE3fSwgeyAgOSwgIDQsIDE5fSwgeyAgOSwgIDQsIDIxfSwKICAgIHsgIDksICA0LCAyMn0sIHsgIDksICA0LCAyM30sIHsgIDksICA0LCAyN30sIHsgIDksICA1LCAgMX0sCiAgICB7ICA5LCAgNSwgIDJ9LCB7ICA5LCAgNSwgIDV9LCB7ICA5LCAgNSwgMTl9LCB7ICA5LCAgNywgIDF9LAogICAgeyAgOSwgIDcsICAyfSwgeyAgOSwgIDcsICA1fSwgeyAgOSwgIDcsICA4fSwgeyAgOSwgIDcsICA5fSwKICAgIHsgIDksICA3LCAxMX0sIHsgIDksICA3LCAxN30sIHsgIDksICA3LCAxOX0sIHsgIDksICA3LCAyMX0sCiAgICB7ICA5LCAgNywgMjN9LCB7ICA5LCAgNywgMjR9LCB7ICA5LCAxMCwgIDF9LCB7ICA5LCAxMCwgIDJ9LAogICAgeyAgOSwgMTAsICA1fSwgeyAgOSwgMTAsICA4fSwgeyAgOSwgMTAsICA5fSwgeyAgOSwgMTAsIDE3fSwKICAgIHsgIDksIDEwLCAxOX0sIHsgIDksIDEwLCAyMX0sIHsgIDksIDEwLCAyMn0sIHsgIDksIDEwLCAyM30sCiAgICB7ICA5LCAxMSwgIDF9LCB7ICA5LCAxMSwgIDJ9LCB7ICA5LCAxMSwgIDV9LCB7ICA5LCAxMSwgIDl9LAogICAgeyAgOSwgMTEsIDE5fSwgeyAgOSwgMTEsIDIxfSwgeyAgOSwgMTEsIDIyfSwgeyAgOSwgMTEsIDIzfSwKICAgIHsgIDksIDExLCAyN30sIHsgIDksIDEyLCAgMX0sIHsgIDksIDEyLCAgNX0sIHsgIDksIDEzLCAgMX0sCiAgICB7ICA5LCAxMywgIDJ9LCB7ICA5LCAxMywgIDN9LCB7ICA5LCAxMywgIDV9LCB7ICA5LCAxMywgIDl9LAogICAgeyAgOSwgMTMsIDE3fSwgeyAgOSwgMTMsIDE5fSwgeyAgOSwgMTMsIDIxfSwgeyAgOSwgMTMsIDIzfSwKICAgIHsgIDksIDE0LCAgMX0sIHsgIDksIDE0LCAgNX0sIHsgIDksIDE0LCAyMn0sIHsgIDksIDE1LCAgMX0sCiAgICB7ICA5LCAxNSwgMjJ9LCB7ICA5LCAxOCwgIDF9LCB7ICA5LCAxOCwgIDJ9LCB7ICA5LCAxOCwgIDV9LAogICAgeyAgOSwgMTgsICA5fSwgeyAgOSwgMTgsIDE3fSwgeyAgOSwgMTgsIDE5fSwgeyAgOSwgMTksICAxfSwKICAgIHsgIDksIDE5LCAgNX0sIHsgIDksIDIwLCAgMX0sIHsgIDksIDIwLCAgMn0sIHsgIDksIDIwLCAgNX0sCiAgICB7ICA5LCAyMCwgIDh9LCB7ICA5LCAyMCwgIDl9LCB7ICA5LCAyMCwgMTB9LCB7ICA5LCAyMCwgMTF9LAogICAgeyAgOSwgMjAsIDE3fSwgeyAgOSwgMjAsIDE5fSwgeyAgOSwgMjAsIDIxfSwgeyAgOSwgMjAsIDIzfSwKICAgIHsgIDksIDIwLCAyN30sIHsgIDksIDIwLCAyOH0sIHsgIDksIDIxLCAgMX0sIHsgIDksIDIxLCAgOX0sCiAgICB7ICA5LCAyMSwgMjJ9LCB7ICA5LCAyMiwgIDF9LCB7ICA5LCAyMywgIDF9LCB7ICA5LCAyMywgIDJ9LAogICAgeyAgOSwgMjMsICA1fSwgeyAgOSwgMjMsICA5fSwgeyAgOSwgMjMsIDIzfSwgeyAgOSwgMjYsICAxfSwKICAgIHsgIDksIDI2LCAgNX0sIHsgIDksIDI2LCAgOX0sIHsgIDksIDI2LCAxN30sIHsgIDksIDI2LCAyMX0sCiAgICB7ICA5LCAyNiwgMjN9LCB7ICA5LCAyNywgIDF9LCB7ICA5LCAyNywgIDJ9LCB7ICA5LCAyNywgIDV9LAogICAgeyAgOSwgMjcsICA5fSwgeyAgOSwgMjcsIDE3fSwgeyAgOSwgMjcsIDE5fSwgeyAgOSwgMjcsIDIxfSwKICAgIHsgIDksIDI5LCAgMX0sIHsgIDksIDI5LCAgMn0sIHsgIDksIDI5LCAgNX0sIHsgIDksIDI5LCAgOX0sCiAgICB7ICA5LCAyOSwgMTF9LCB7ICA5LCAyOSwgMTd9LCB7ICA5LCAyOSwgMTl9LCB7ICA5LCAyOSwgMjF9LAogICAgeyAgOSwgMjksIDIzfSwgeyAgOSwgMjksIDI0fSwgeyAgOSwgMjksIDI1fSwgeyAxMCwgIDMsICAxfSwKICAgIHsgMTAsICAzLCAgMn0sIHsgMTAsICAzLCAgNX0sIHsgMTAsICAzLCAgOX0sIHsgMTAsICAzLCAxMX0sCiAgICB7IDEwLCAgMywgMTd9LCB7IDEwLCAgMywgMTl9LCB7IDEwLCAgMywgMjF9LCB7IDEwLCAgMywgMjJ9LAogICAgeyAxMCwgIDMsIDIzfSwgeyAxMCwgIDMsIDI5fSwgeyAxMCwgIDQsICAxfSwgeyAxMCwgIDQsICAyfSwKICAgIHsgMTAsICA0LCAgNX0sIHsgMTAsICA0LCAgOX0sIHsgMTAsICA0LCAxN30sIHsgMTAsICA0LCAxOX0sCiAgICB7IDEwLCAgNCwgMjF9LCB7IDEwLCAgNCwgMjJ9LCB7IDEwLCAgNCwgMjN9LCB7IDEwLCAgNSwgIDF9LAogICAgeyAxMCwgIDUsICAyfSwgeyAxMCwgIDUsIDE3fSwgeyAxMCwgIDcsICAxfSwgeyAxMCwgIDcsICAyfSwKICAgIHsgMTAsICA3LCAgNX0sIHsgMTAsICA3LCAgOH0sIHsgMTAsICA3LCAgOX0sIHsgMTAsICA3LCAxN30sCiAgICB7IDEwLCAgNywgMjF9LCB7IDEwLCAgNywgMjJ9LCB7IDEwLCAgNywgMjN9LCB7IDEwLCAxMCwgIDF9LAogICAgeyAxMCwgMTAsIDIzfSwgeyAxMCwgMTEsICAxfSwgeyAxMCwgMTEsICAyfSwgeyAxMCwgMTEsIDE3fSwKICAgIHsgMTAsIDExLCAxOX0sIHsgMTAsIDExLCAyMX0sIHsgMTAsIDExLCAyMn0sIHsgMTAsIDExLCAyM30sCiAgICB7IDEwLCAxMywgIDF9LCB7IDEwLCAxMywgIDJ9LCB7IDEwLCAxMywgIDV9LCB7IDEwLCAxMywgIDl9LAogICAgeyAxMCwgMTMsIDE3fSwgeyAxMCwgMTMsIDE5fSwgeyAxMCwgMTMsIDIzfSwgeyAxMCwgMTgsICAxfSwKICAgIHsgMTAsIDE5LCAgMX0sIHsgMTAsIDE5LCAyM30sIHsgMTAsIDIwLCAgMX0sIHsgMTAsIDIwLCAgMn0sCiAgICB7IDEwLCAyMCwgIDV9LCB7IDEwLCAyMCwgIDl9LCB7IDEwLCAyMCwgMTd9LCB7IDEwLCAyMCwgMjF9LAogICAgeyAxMCwgMjAsIDIzfSwgeyAxMCwgMjYsICAxfSwgeyAxMCwgMjYsIDIzfSwgeyAxMCwgMjcsICAxfSwKICAgIHsgMTAsIDI3LCAgNX0sIHsgMTAsIDI3LCAgOX0sIHsgMTAsIDI3LCAxN30sIHsgMTAsIDI3LCAxOX0sCiAgICB7IDEwLCAyOSwgIDF9LCB7IDEwLCAyOSwgIDJ9LCB7IDEwLCAyOSwgIDV9LCB7IDEwLCAyOSwgIDl9LAogICAgeyAxMCwgMjksIDE3fSwgeyAxMCwgMjksIDE5fSwgeyAxMCwgMjksIDIxfSwgeyAxMCwgMjksIDIzfSwKICAgIHsgMTEsICAzLCAgMX0sIHsgMTEsICAzLCAgMn0sIHsgMTEsICAzLCAgNH0sIHsgMTEsICAzLCAgNX0sCiAgICB7IDExLCAgMywgIDh9LCB7IDExLCAgMywgIDl9LCB7IDExLCAgMywgMTB9LCB7IDExLCAgMywgMTF9LAogICAgeyAxMSwgIDMsIDE3fSwgeyAxMSwgIDMsIDE5fSwgeyAxMSwgIDMsIDIxfSwgeyAxMSwgIDMsIDIyfSwKICAgIHsgMTEsICAzLCAyM30sIHsgMTEsICAzLCAyN30sIHsgMTEsICA0LCAgMX0sIHsgMTEsICA0LCAgMn0sCiAgICB7IDExLCAgNCwgIDV9LCB7IDExLCAgNCwgIDl9LCB7IDExLCAgNCwgMTd9LCB7IDExLCAgNCwgMTl9LAogICAgeyAxMSwgIDQsIDIxfSwgeyAxMSwgIDQsIDIyfSwgeyAxMSwgIDQsIDIzfSwgeyAxMSwgIDUsICAxfSwKICAgIHsgMTEsICA1LCAgMn0sIHsgMTEsICA1LCAgNX0sIHsgMTEsICA1LCAgOX0sIHsgMTEsICA1LCAxN30sCiAgICB7IDExLCAgNSwgMTl9LCB7IDExLCAgNSwgMjF9LCB7IDExLCAgNSwgMjN9LCB7IDExLCAgNiwgIDF9LAogICAgeyAxMSwgIDYsICA1fSwgeyAxMSwgIDYsICA5fSwgeyAxMSwgIDYsIDE3fSwgeyAxMSwgIDYsIDIzfSwKICAgIHsgMTEsICA3LCAgMX0sIHsgMTEsICA3LCAgMn0sIHsgMTEsICA3LCAgM30sIHsgMTEsICA3LCAgNH0sCiAgICB7IDExLCAgNywgIDV9LCB7IDExLCAgNywgIDh9LCB7IDExLCAgNywgIDl9LCB7IDExLCAgNywgMTF9LAogICAgeyAxMSwgIDcsIDEyfSwgeyAxMSwgIDcsIDE3fSwgeyAxMSwgIDcsIDE5fSwgeyAxMSwgIDcsIDIxfSwKICAgIHsgMTEsICA3LCAyMn0sIHsgMTEsICA3LCAyM30sIHsgMTEsICA3LCAyOH0sIHsgMTEsIDEwLCAgMX0sCiAgICB7IDExLCAxMCwgIDJ9LCB7IDExLCAxMCwgIDV9LCB7IDExLCAxMCwgIDl9LCB7IDExLCAxMCwgMTd9LAogICAgeyAxMSwgMTAsIDE5fSwgeyAxMSwgMTAsIDIxfSwgeyAxMSwgMTAsIDIyfSwgeyAxMSwgMTAsIDIzfSwKICAgIHsgMTEsIDExLCAgMX0sIHsgMTEsIDExLCAgMn0sIHsgMTEsIDExLCAgNX0sIHsgMTEsIDExLCAgOX0sCiAgICB7IDExLCAxMSwgMTd9LCB7IDExLCAxMSwgMTl9LCB7IDExLCAxMSwgMjF9LCB7IDExLCAxMSwgMjJ9LAogICAgeyAxMSwgMTEsIDIzfSwgeyAxMSwgMTIsICAxfSwgeyAxMSwgMTIsICA1fSwgeyAxMSwgMTIsICA5fSwKICAgIHsgMTEsIDEyLCAyM30sIHsgMTEsIDEzLCAgMX0sIHsgMTEsIDEzLCAgMn0sIHsgMTEsIDEzLCAgM30sCiAgICB7IDExLCAxMywgIDV9LCB7IDExLCAxMywgIDl9LCB7IDExLCAxMywgMTF9LCB7IDExLCAxMywgMTd9LAogICAgeyAxMSwgMTMsIDE5fSwgeyAxMSwgMTMsIDIxfSwgeyAxMSwgMTMsIDIzfSwgeyAxMSwgMTMsIDI3fSwKICAgIHsgMTEsIDE0LCAgMX0sIHsgMTEsIDE0LCAgMn0sIHsgMTEsIDE0LCAgNX0sIHsgMTEsIDE0LCAgOX0sCiAgICB7IDExLCAxNCwgMjN9LCB7IDExLCAxNSwgIDF9LCB7IDExLCAxNSwgIDV9LCB7IDExLCAxNSwgIDl9LAogICAgeyAxMSwgMTUsIDE3fSwgeyAxMSwgMTUsIDIxfSwgeyAxMSwgMTUsIDIyfSwgeyAxMSwgMTgsICAxfSwKICAgIHsgMTEsIDE4LCAgNX0sIHsgMTEsIDE4LCAgOX0sIHsgMTEsIDE4LCAxN30sIHsgMTEsIDE4LCAxOX0sCiAgICB7IDExLCAxOCwgMjF9LCB7IDExLCAxOSwgIDF9LCB7IDExLCAxOSwgIDJ9LCB7IDExLCAxOSwgIDV9LAogICAgeyAxMSwgMTksICA5fSwgeyAxMSwgMTksIDE3fSwgeyAxMSwgMTksIDE5fSwgeyAxMSwgMTksIDIxfSwKICAgIHsgMTEsIDE5LCAyM30sIHsgMTEsIDIwLCAgMX0sIHsgMTEsIDIwLCAgMn0sIHsgMTEsIDIwLCAgNX0sCiAgICB7IDExLCAyMCwgIDh9LCB7IDExLCAyMCwgIDl9LCB7IDExLCAyMCwgMTd9LCB7IDExLCAyMCwgMTl9LAogICAgeyAxMSwgMjAsIDIxfSwgeyAxMSwgMjAsIDIzfSwgeyAxMSwgMjAsIDI1fSwgeyAxMSwgMjAsIDI3fSwKICAgIHsgMTEsIDIwLCAyOH0sIHsgMTEsIDIxLCAgMX0sIHsgMTEsIDIxLCAyMn0sIHsgMTEsIDIyLCAgMX0sCiAgICB7IDExLCAyMiwgIDJ9LCB7IDExLCAyMiwgIDV9LCB7IDExLCAyMiwgIDl9LCB7IDExLCAyMiwgMTd9LAogICAgeyAxMSwgMjIsIDIzfSwgeyAxMSwgMjMsICAxfSwgeyAxMSwgMjMsICAyfSwgeyAxMSwgMjMsICA1fSwKICAgIHsgMTEsIDIzLCAgOX0sIHsgMTEsIDIzLCAxN30sIHsgMTEsIDIzLCAxOX0sIHsgMTEsIDIzLCAyMX0sCiAgICB7IDExLCAyMywgMjN9LCB7IDExLCAyNiwgIDF9LCB7IDExLCAyNiwgIDJ9LCB7IDExLCAyNiwgIDl9LAogICAgeyAxMSwgMjYsIDE3fSwgeyAxMSwgMjYsIDIxfSwgeyAxMSwgMjYsIDIzfSwgeyAxMSwgMjcsICAxfSwKICAgIHsgMTEsIDI3LCAgMn0sIHsgMTEsIDI3LCAgNX0sIHsgMTEsIDI3LCAgOX0sIHsgMTEsIDI3LCAxMH0sCiAgICB7IDExLCAyNywgMTd9LCB7IDExLCAyNywgMTl9LCB7IDExLCAyNywgMjF9LCB7IDExLCAyNywgMjN9LAogICAgeyAxMSwgMjksICAxfSwgeyAxMSwgMjksICAyfSwgeyAxMSwgMjksICA1fSwgeyAxMSwgMjksICA4fSwKICAgIHsgMTEsIDI5LCAgOX0sIHsgMTEsIDI5LCAxNn0sIHsgMTEsIDI5LCAxN30sIHsgMTEsIDI5LCAxOX0sCiAgICB7IDExLCAyOSwgMjF9LCB7IDExLCAyOSwgMjN9LCB7IDExLCAyOSwgMjh9LCB7IDEyLCAgMywgIDF9LAogICAgeyAxMiwgIDMsICAyfSwgeyAxMiwgIDMsICA0fSwgeyAxMiwgIDMsICA1fSwgeyAxMiwgIDMsICA5fSwKICAgIHsgMTIsICAzLCAxN30sIHsgMTIsICAzLCAxOX0sIHsgMTIsICAzLCAyMn0sIHsgMTIsICAzLCAyM30sCiAgICB7IDEyLCAgMywgMjl9LCB7IDEyLCAgNCwgIDF9LCB7IDEyLCAgNCwgIDJ9LCB7IDEyLCAgNCwgIDV9LAogICAgeyAxMiwgIDQsICA5fSwgeyAxMiwgIDQsIDE3fSwgeyAxMiwgIDQsIDE5fSwgeyAxMiwgIDQsIDIyfSwKICAgIHsgMTIsICA0LCAyM30sIHsgMTIsICA1LCAyM30sIHsgMTIsICA3LCAgMX0sIHsgMTIsICA3LCAgMn0sCiAgICB7IDEyLCAgNywgIDV9LCB7IDEyLCAgNywgIDl9LCB7IDEyLCAgNywgMTF9LCB7IDEyLCAgNywgMTd9LAogICAgeyAxMiwgIDcsIDE5fSwgeyAxMiwgIDcsIDIyfSwgeyAxMiwgIDcsIDIzfSwgeyAxMiwgMTAsICAxfSwKICAgIHsgMTIsIDEwLCAgNX0sIHsgMTIsIDEwLCAgOX0sIHsgMTIsIDEyLCAgNX0sIHsgMTIsIDEzLCAgMX0sCiAgICB7IDEyLCAxMywgIDJ9LCB7IDEyLCAxMywgIDV9LCB7IDEyLCAxMywgIDh9LCB7IDEyLCAxMywgIDl9LAogICAgeyAxMiwgMTMsIDExfSwgeyAxMiwgMTMsIDE3fSwgeyAxMiwgMTMsIDE5fSwgeyAxMiwgMTMsIDIzfSwKICAgIHsgMTIsIDE0LCAgMX0sIHsgMTIsIDE0LCAgMn0sIHsgMTIsIDE0LCAgNX0sIHsgMTIsIDE0LCAyMn0sCiAgICB7IDEyLCAxNSwgIDF9LCB7IDEyLCAxNSwgMjJ9LCB7IDEyLCAxOCwgIDF9LCB7IDEyLCAxOCwgIDV9LAogICAgeyAxMiwgMTgsICA5fSwgeyAxMiwgMTgsIDE3fSwgeyAxMiwgMTgsIDE5fSwgeyAxMiwgMTksICAxfSwKICAgIHsgMTIsIDIwLCAgMX0sIHsgMTIsIDIwLCAgMn0sIHsgMTIsIDIwLCAgNX0sIHsgMTIsIDIwLCAgOX0sCiAgICB7IDEyLCAyMCwgMTd9LCB7IDEyLCAyMCwgMTl9LCB7IDEyLCAyMCwgMjN9LCB7IDEyLCAyMSwgIDF9LAogICAgeyAxMiwgMjEsIDIyfSwgeyAxMiwgMjIsICAxfSwgeyAxMiwgMjMsICAxfSwgeyAxMiwgMjMsICA1fSwKICAgIHsgMTIsIDI2LCAyM30sIHsgMTIsIDI3LCAgMX0sIHsgMTIsIDI3LCAgMn0sIHsgMTIsIDI3LCAgNX0sCiAgICB7IDEyLCAyNywgIDl9LCB7IDEyLCAyNywgMTF9LCB7IDEyLCAyNywgMTZ9LCB7IDEyLCAyNywgMTd9LAogICAgeyAxMiwgMjcsIDE5fSwgeyAxMiwgMjgsICAxfSwgeyAxMiwgMjgsICA1fSwgeyAxMiwgMjgsICA5fSwKICAgIHsgMTIsIDI4LCAxN30sIHsgMTIsIDI5LCAgMX0sIHsgMTIsIDI5LCAgMn0sIHsgMTIsIDI5LCAgNX0sCiAgICB7IDEyLCAyOSwgIDl9LCB7IDEyLCAyOSwgMTd9LCB7IDEyLCAyOSwgMTl9LCB7IDEyLCAyOSwgMjF9LAogICAgeyAxMiwgMjksIDIzfSwgeyAxMywgIDMsICAxfSwgeyAxMywgIDMsICAyfSwgeyAxMywgIDMsICA1fSwKICAgIHsgMTMsICAzLCAgNn0sIHsgMTMsICAzLCAgN30sIHsgMTMsICAzLCAgOX0sIHsgMTMsICAzLCAxMH0sCiAgICB7IDEzLCAgMywgMTF9LCB7IDEzLCAgMywgMTZ9LCB7IDEzLCAgMywgMTd9LCB7IDEzLCAgMywgMTl9LAogICAgeyAxMywgIDMsIDIxfSwgeyAxMywgIDMsIDIyfSwgeyAxMywgIDMsIDIzfSwgeyAxMywgIDMsIDI3fSwKICAgIHsgMTMsICAzLCAyOH0sIHsgMTMsICA0LCAgMX0sIHsgMTMsICA0LCAgMn0sIHsgMTMsICA0LCAgNX0sCiAgICB7IDEzLCAgNCwgIDl9LCB7IDEzLCAgNCwgMTd9LCB7IDEzLCAgNCwgMTl9LCB7IDEzLCAgNCwgMjF9LAogICAgeyAxMywgIDQsIDIyfSwgeyAxMywgIDQsIDIzfSwgeyAxMywgIDUsICAxfSwgeyAxMywgIDUsICAyfSwKICAgIHsgMTMsICA1LCAgNX0sIHsgMTMsICA1LCAgOX0sIHsgMTMsICA1LCAxMn0sIHsgMTMsICA1LCAxN30sCiAgICB7IDEzLCAgNSwgMTl9LCB7IDEzLCAgNSwgMjF9LCB7IDEzLCAgNSwgMjN9LCB7IDEzLCAgNSwgMjd9LAogICAgeyAxMywgIDUsIDI5fSwgeyAxMywgIDYsICAxfSwgeyAxMywgIDYsICA1fSwgeyAxMywgIDYsICA5fSwKICAgIHsgMTMsICA2LCAxOX0sIHsgMTMsICA3LCAgMX0sIHsgMTMsICA3LCAgMn0sIHsgMTMsICA3LCAgNX0sCiAgICB7IDEzLCAgNywgIDZ9LCB7IDEzLCAgNywgIDh9LCB7IDEzLCAgNywgIDl9LCB7IDEzLCAgNywgMTB9LAogICAgeyAxMywgIDcsIDExfSwgeyAxMywgIDcsIDE3fSwgeyAxMywgIDcsIDE5fSwgeyAxMywgIDcsIDIwfSwKICAgIHsgMTMsICA3LCAyMX0sIHsgMTMsICA3LCAyMn0sIHsgMTMsICA3LCAyM30sIHsgMTMsICA3LCAyNH0sCiAgICB7IDEzLCAgNywgMjZ9LCB7IDEzLCAgNywgMjh9LCB7IDEzLCAxMCwgIDF9LCB7IDEzLCAxMCwgIDJ9LAogICAgeyAxMywgMTAsICA1fSwgeyAxMywgMTAsICA5fSwgeyAxMywgMTAsIDE3fSwgeyAxMywgMTAsIDE5fSwKICAgIHsgMTMsIDEwLCAyMX0sIHsgMTMsIDEwLCAyM30sIHsgMTMsIDExLCAgMX0sIHsgMTMsIDExLCAgMn0sCiAgICB7IDEzLCAxMSwgIDN9LCB7IDEzLCAxMSwgIDV9LCB7IDEzLCAxMSwgIDl9LCB7IDEzLCAxMSwgMTF9LAogICAgeyAxMywgMTEsIDEyfSwgeyAxMywgMTEsIDE3fSwgeyAxMywgMTEsIDE5fSwgeyAxMywgMTEsIDIwfSwKICAgIHsgMTMsIDExLCAyMX0sIHsgMTMsIDExLCAyMn0sIHsgMTMsIDExLCAyM30sIHsgMTMsIDExLCAyN30sCiAgICB7IDEzLCAxMSwgMjh9LCB7IDEzLCAxMSwgMjl9LCB7IDEzLCAxMiwgIDF9LCB7IDEzLCAxMiwgIDV9LAogICAgeyAxMywgMTIsICA5fSwgeyAxMywgMTIsIDE3fSwgeyAxMywgMTIsIDE5fSwgeyAxMywgMTIsIDIxfSwKICAgIHsgMTMsIDEyLCAyMn0sIHsgMTMsIDEzLCAgMX0sIHsgMTMsIDEzLCAgMn0sIHsgMTMsIDEzLCAgNX0sCiAgICB7IDEzLCAxMywgIDl9LCB7IDEzLCAxMywgMTB9LCB7IDEzLCAxMywgMTF9LCB7IDEzLCAxMywgMTN9LAogICAgeyAxMywgMTMsIDE2fSwgeyAxMywgMTMsIDE3fSwgeyAxMywgMTMsIDE5fSwgeyAxMywgMTMsIDIxfSwKICAgIHsgMTMsIDEzLCAyM30sIHsgMTMsIDEzLCAyNX0sIHsgMTMsIDE0LCAgMX0sIHsgMTMsIDE0LCAgMn0sCiAgICB7IDEzLCAxNCwgIDV9LCB7IDEzLCAxNCwgIDl9LCB7IDEzLCAxNCwgMTd9LCB7IDEzLCAxNCwgMTl9LAogICAgeyAxMywgMTQsIDIxfSwgeyAxMywgMTQsIDIyfSwgeyAxMywgMTQsIDIzfSwgeyAxMywgMTUsICAxfSwKICAgIHsgMTMsIDE1LCAgMn0sIHsgMTMsIDE1LCAgNX0sIHsgMTMsIDE1LCAxN30sIHsgMTMsIDE1LCAyMX0sCiAgICB7IDEzLCAxNSwgMjN9LCB7IDEzLCAxOCwgIDF9LCB7IDEzLCAxOCwgIDJ9LCB7IDEzLCAxOCwgIDV9LAogICAgeyAxMywgMTgsICA5fSwgeyAxMywgMTgsIDE3fSwgeyAxMywgMTgsIDE5fSwgeyAxMywgMTgsIDIxfSwKICAgIHsgMTMsIDE4LCAyM30sIHsgMTMsIDE5LCAgMX0sIHsgMTMsIDE5LCAgMn0sIHsgMTMsIDE5LCAgNX0sCiAgICB7IDEzLCAxOSwgIDl9LCB7IDEzLCAxOSwgMTd9LCB7IDEzLCAxOSwgMTl9LCB7IDEzLCAxOSwgMjF9LAogICAgeyAxMywgMTksIDIzfSwgeyAxMywgMjAsICAxfSwgeyAxMywgMjAsICAyfSwgeyAxMywgMjAsICA1fSwKICAgIHsgMTMsIDIwLCAgOX0sIHsgMTMsIDIwLCAxMH0sIHsgMTMsIDIwLCAxMX0sIHsgMTMsIDIwLCAxN30sCiAgICB7IDEzLCAyMCwgMTl9LCB7IDEzLCAyMCwgMjF9LCB7IDEzLCAyMCwgMjN9LCB7IDEzLCAyMSwgIDF9LAogICAgeyAxMywgMjEsICAyfSwgeyAxMywgMjEsICA1fSwgeyAxMywgMjEsICA5fSwgeyAxMywgMjEsIDE3fSwKICAgIHsgMTMsIDIxLCAxOX0sIHsgMTMsIDIxLCAyMn0sIHsgMTMsIDIxLCAyM30sIHsgMTMsIDIyLCAgMX0sCiAgICB7IDEzLCAyMiwgIDJ9LCB7IDEzLCAyMiwgIDV9LCB7IDEzLCAyMiwgIDl9LCB7IDEzLCAyMiwgMTd9LAogICAgeyAxMywgMjIsIDE5fSwgeyAxMywgMjIsIDIzfSwgeyAxMywgMjMsICAxfSwgeyAxMywgMjMsICAyfSwKICAgIHsgMTMsIDIzLCAgNX0sIHsgMTMsIDIzLCAgOX0sIHsgMTMsIDIzLCAxN30sIHsgMTMsIDIzLCAxOX0sCiAgICB7IDEzLCAyMywgMjF9LCB7IDEzLCAyMywgMjN9LCB7IDEzLCAyNiwgIDF9LCB7IDEzLCAyNiwgIDJ9LAogICAgeyAxMywgMjYsICA1fSwgeyAxMywgMjYsICA5fSwgeyAxMywgMjYsIDE3fSwgeyAxMywgMjYsIDE5fSwKICAgIHsgMTMsIDI2LCAyMX0sIHsgMTMsIDI2LCAyM30sIHsgMTMsIDI2LCAyNX0sIHsgMTMsIDI3LCAgMX0sCiAgICB7IDEzLCAyNywgIDJ9LCB7IDEzLCAyNywgIDV9LCB7IDEzLCAyNywgIDl9LCB7IDEzLCAyNywgMTV9LAogICAgeyAxMywgMjcsIDE3fSwgeyAxMywgMjcsIDE5fSwgeyAxMywgMjcsIDIxfSwgeyAxMywgMjcsIDIzfSwKICAgIHsgMTMsIDI3LCAyNH0sIHsgMTMsIDI3LCAyNX0sIHsgMTMsIDI3LCAyNn0sIHsgMTMsIDI3LCAyN30sCiAgICB7IDEzLCAyNywgMjh9LCB7IDEzLCAyNywgMjl9LCB7IDEzLCAyOCwgIDF9LCB7IDEzLCAyOCwgIDV9LAogICAgeyAxMywgMjgsICA5fSwgeyAxMywgMjgsIDE3fSwgeyAxMywgMjgsIDIxfSwgeyAxMywgMjksICAxfSwKICAgIHsgMTMsIDI5LCAgMn0sIHsgMTMsIDI5LCAgNX0sIHsgMTMsIDI5LCAgOX0sIHsgMTMsIDI5LCAxMH0sCiAgICB7IDEzLCAyOSwgMTF9LCB7IDEzLCAyOSwgMTZ9LCB7IDEzLCAyOSwgMTd9LCB7IDEzLCAyOSwgMTl9LAogICAgeyAxMywgMjksIDIxfSwgeyAxMywgMjksIDIyfSwgeyAxMywgMjksIDIzfSwgeyAxMywgMjksIDI0fSwKICAgIHsgMTMsIDI5LCAyOH0sIHsgMTQsICAzLCAgMX0sIHsgMTQsICAzLCAgMn0sIHsgMTQsICAzLCAgNX0sCiAgICB7IDE0LCAgMywgIDd9LCB7IDE0LCAgMywgIDh9LCB7IDE0LCAgMywgIDl9LCB7IDE0LCAgMywgMTF9LAogICAgeyAxNCwgIDMsIDE3fSwgeyAxNCwgIDMsIDE5fSwgeyAxNCwgIDMsIDIxfSwgeyAxNCwgIDMsIDIyfSwKICAgIHsgMTQsICAzLCAyM30sIHsgMTQsICAzLCAyNH0sIHsgMTQsICA0LCAgMX0sIHsgMTQsICA0LCAgMn0sCiAgICB7IDE0LCAgNCwgIDV9LCB7IDE0LCAgNCwgIDl9LCB7IDE0LCAgNCwgMTd9LCB7IDE0LCAgNCwgMTl9LAogICAgeyAxNCwgIDQsIDIxfSwgeyAxNCwgIDQsIDIyfSwgeyAxNCwgIDQsIDIzfSwgeyAxNCwgIDUsICAxfSwKICAgIHsgMTQsICA1LCAgMn0sIHsgMTQsICA1LCAgNX0sIHsgMTQsICA1LCAgN30sIHsgMTQsICA1LCAgOX0sCiAgICB7IDE0LCAgNSwgMTd9LCB7IDE0LCAgNSwgMjN9LCB7IDE0LCAgNiwgIDF9LCB7IDE0LCAgNiwgIDV9LAogICAgeyAxNCwgIDYsICA5fSwgeyAxNCwgIDcsICAxfSwgeyAxNCwgIDcsICAyfSwgeyAxNCwgIDcsICA1fSwKICAgIHsgMTQsICA3LCAgOX0sIHsgMTQsICA3LCAxMX0sIHsgMTQsICA3LCAxN30sIHsgMTQsICA3LCAxOX0sCiAgICB7IDE0LCAgNywgMjF9LCB7IDE0LCAgNywgMjN9LCB7IDE0LCAgNywgMjR9LCB7IDE0LCAxMCwgIDF9LAogICAgeyAxNCwgMTAsICAyfSwgeyAxNCwgMTAsICA1fSwgeyAxNCwgMTAsICA5fSwgeyAxNCwgMTAsIDE3fSwKICAgIHsgMTQsIDEwLCAxOX0sIHsgMTQsIDEwLCAyMX0sIHsgMTQsIDEwLCAyM30sIHsgMTQsIDExLCAgMX0sCiAgICB7IDE0LCAxMSwgIDV9LCB7IDE0LCAxMSwgIDl9LCB7IDE0LCAxMSwgMTd9LCB7IDE0LCAxMSwgMTl9LAogICAgeyAxNCwgMTEsIDIyfSwgeyAxNCwgMTEsIDIzfSwgeyAxNCwgMTIsICAxfSwgeyAxNCwgMTMsICAxfSwKICAgIHsgMTQsIDEzLCAgMn0sIHsgMTQsIDEzLCAgNX0sIHsgMTQsIDEzLCAgOX0sIHsgMTQsIDEzLCAxMX0sCiAgICB7IDE0LCAxMywgMTd9LCB7IDE0LCAxMywgMTl9LCB7IDE0LCAxMywgMjF9LCB7IDE0LCAxMywgMjN9LAogICAgeyAxNCwgMTMsIDI0fSwgeyAxNCwgMTMsIDI1fSwgeyAxNCwgMTMsIDI5fSwgeyAxNCwgMTQsICAxfSwKICAgIHsgMTQsIDE0LCAgMn0sIHsgMTQsIDE0LCAgOX0sIHsgMTQsIDE0LCAxOX0sIHsgMTQsIDE0LCAyMX0sCiAgICB7IDE0LCAxNCwgMjN9LCB7IDE0LCAxNSwgIDF9LCB7IDE0LCAxNSwgMjJ9LCB7IDE0LCAxNSwgMjN9LAogICAgeyAxNCwgMTgsICAxfSwgeyAxNCwgMTgsICA1fSwgeyAxNCwgMTgsICA5fSwgeyAxNCwgMTgsIDE3fSwKICAgIHsgMTQsIDE4LCAxOX0sIHsgMTQsIDE4LCAyMX0sIHsgMTQsIDE4LCAyM30sIHsgMTQsIDE5LCAgMX0sCiAgICB7IDE0LCAxOSwgIDJ9LCB7IDE0LCAxOSwgIDV9LCB7IDE0LCAxOSwgMjN9LCB7IDE0LCAyMCwgIDF9LAogICAgeyAxNCwgMjAsICAyfSwgeyAxNCwgMjAsICA1fSwgeyAxNCwgMjAsICA5fSwgeyAxNCwgMjAsIDEwfSwKICAgIHsgMTQsIDIwLCAxMX0sIHsgMTQsIDIwLCAxN30sIHsgMTQsIDIwLCAxOX0sIHsgMTQsIDIwLCAyMX0sCiAgICB7IDE0LCAyMCwgMjN9LCB7IDE0LCAyMSwgIDF9LCB7IDE0LCAyMSwgMjJ9LCB7IDE0LCAyMiwgIDF9LAogICAgeyAxNCwgMjMsICAxfSwgeyAxNCwgMjMsICAyfSwgeyAxNCwgMjMsICA1fSwgeyAxNCwgMjMsICA5fSwKICAgIHsgMTQsIDIzLCAxN30sIHsgMTQsIDIzLCAxOX0sIHsgMTQsIDIzLCAyMX0sIHsgMTQsIDI2LCAgMX0sCiAgICB7IDE0LCAyNiwgIDV9LCB7IDE0LCAyNiwgIDl9LCB7IDE0LCAyNiwgMTd9LCB7IDE0LCAyNywgIDF9LAogICAgeyAxNCwgMjcsICAyfSwgeyAxNCwgMjcsICA1fSwgeyAxNCwgMjcsICA5fSwgeyAxNCwgMjcsIDE3fSwKICAgIHsgMTQsIDI3LCAxOX0sIHsgMTQsIDI3LCAyMX0sIHsgMTQsIDI3LCAyM30sIHsgMTQsIDI5LCAgMX0sCiAgICB7IDE0LCAyOSwgIDJ9LCB7IDE0LCAyOSwgIDV9LCB7IDE0LCAyOSwgIDh9LCB7IDE0LCAyOSwgIDl9LAogICAgeyAxNCwgMjksIDExfSwgeyAxNCwgMjksIDE3fSwgeyAxNCwgMjksIDE5fSwgeyAxNCwgMjksIDIxfSwKICAgIHsgMTQsIDI5LCAyM30sIHsgMTQsIDI5LCAyNH0sIHsgMTQsIDI5LCAyN30sIHsgMTQsIDI5LCAyOH0sCiAgICB7IDE1LCAgMywgIDF9LCB7IDE1LCAgMywgIDJ9LCB7IDE1LCAgMywgIDV9LCB7IDE1LCAgMywgIDd9LAogICAgeyAxNSwgIDMsICA5fSwgeyAxNSwgIDMsIDEyfSwgeyAxNSwgIDMsIDE3fSwgeyAxNSwgIDMsIDE5fSwKICAgIHsgMTUsICAzLCAyMX0sIHsgMTUsICAzLCAyMn0sIHsgMTUsICAzLCAyM30sIHsgMTUsICA0LCAgMX0sCiAgICB7IDE1LCAgNCwgIDJ9LCB7IDE1LCAgNCwgIDV9LCB7IDE1LCAgNCwgIDl9LCB7IDE1LCAgNCwgMTd9LAogICAgeyAxNSwgIDQsIDE5fSwgeyAxNSwgIDQsIDIxfSwgeyAxNSwgIDQsIDIyfSwgeyAxNSwgIDQsIDIzfSwKICAgIHsgMTUsICA1LCAgMX0sIHsgMTUsICA1LCAgNX0sIHsgMTUsICA1LCAyM30sIHsgMTUsICA3LCAgMX0sCiAgICB7IDE1LCAgNywgIDJ9LCB7IDE1LCAgNywgIDV9LCB7IDE1LCAgNywgIDl9LCB7IDE1LCAgNywgMTd9LAogICAgeyAxNSwgIDcsIDE5fSwgeyAxNSwgIDcsIDIxfSwgeyAxNSwgIDcsIDIyfSwgeyAxNSwgIDcsIDIzfSwKICAgIHsgMTUsIDEwLCAgMX0sIHsgMTUsIDEwLCAyM30sIHsgMTUsIDExLCAgMX0sIHsgMTUsIDExLCAyMn0sCiAgICB7IDE1LCAxMywgIDF9LCB7IDE1LCAxMywgIDJ9LCB7IDE1LCAxMywgIDV9LCB7IDE1LCAxMywgIDl9LAogICAgeyAxNSwgMTMsIDE3fSwgeyAxNSwgMTMsIDE5fSwgeyAxNSwgMTMsIDIxfSwgeyAxNSwgMTMsIDIzfSwKICAgIHsgMTUsIDEzLCAyNX0sIHsgMTUsIDE0LCAgMX0sIHsgMTUsIDE0LCAgMn0sIHsgMTUsIDE0LCAgOX0sCiAgICB7IDE1LCAxNCwgMjJ9LCB7IDE1LCAxNSwgIDF9LCB7IDE1LCAxNSwgMjJ9LCB7IDE1LCAxOCwgIDF9LAogICAgeyAxNSwgMTgsICA1fSwgeyAxNSwgMTgsICA5fSwgeyAxNSwgMTgsIDE3fSwgeyAxNSwgMTgsIDE5fSwKICAgIHsgMTUsIDE5LCAyM30sIHsgMTUsIDIwLCAgMX0sIHsgMTUsIDIwLCAgMn0sIHsgMTUsIDIwLCAgNX0sCiAgICB7IDE1LCAyMCwgIDl9LCB7IDE1LCAyMCwgMTd9LCB7IDE1LCAyMCwgMTl9LCB7IDE1LCAyMCwgMjN9LAogICAgeyAxNSwgMjEsICAxfSwgeyAxNSwgMjEsIDIyfSwgeyAxNSwgMjEsIDIzfSwgeyAxNSwgMjMsICAxfSwKICAgIHsgMTUsIDI2LCAgMX0sIHsgMTUsIDI3LCAgMX0sIHsgMTUsIDI3LCAxN30sIHsgMTUsIDI3LCAyMX0sCiAgICB7IDE1LCAyNywgMjN9LCB7IDE1LCAyOSwgIDF9LCB7IDE1LCAyOSwgIDJ9LCB7IDE1LCAyOSwgIDV9LAogICAgeyAxNSwgMjksICA5fSwgeyAxNSwgMjksIDE3fSwgeyAxNSwgMjksIDE5fSwgeyAxNSwgMjksIDIzfSwKICAgIHsgMTUsIDI5LCAyNH0sIHsgMTUsIDI5LCAyOX0sIHsgMTYsICAzLCAgMX0sIHsgMTYsICAzLCAgMn0sCiAgICB7IDE2LCAgMywgIDV9LCB7IDE2LCAgMywgIDd9LCB7IDE2LCAgMywgIDl9LCB7IDE2LCAgMywgMTd9LAogICAgeyAxNiwgIDMsIDE5fSwgeyAxNiwgIDMsIDIxfSwgeyAxNiwgIDMsIDIyfSwgeyAxNiwgIDMsIDIzfSwKICAgIHsgMTYsICAzLCAyNH0sIHsgMTYsICA0LCAgMX0sIHsgMTYsICA0LCAgMn0sIHsgMTYsICA0LCAgNX0sCiAgICB7IDE2LCAgNCwgIDl9LCB7IDE2LCAgNCwgMTd9LCB7IDE2LCAgNCwgMTl9LCB7IDE2LCAgNCwgMjF9LAogICAgeyAxNiwgIDQsIDIyfSwgeyAxNiwgIDQsIDIzfSwgeyAxNiwgIDUsICAxfSwgeyAxNiwgIDUsICA1fSwKICAgIHsgMTYsICA1LCAgN30sIHsgMTYsICA1LCAgOX0sIHsgMTYsICA1LCAxN30sIHsgMTYsICA1LCAyM30sCiAgICB7IDE2LCAgNywgIDF9LCB7IDE2LCAgNywgIDJ9LCB7IDE2LCAgNywgIDV9LCB7IDE2LCAgNywgIDl9LAogICAgeyAxNiwgIDcsIDE3fSwgeyAxNiwgIDcsIDE5fSwgeyAxNiwgIDcsIDIxfSwgeyAxNiwgIDcsIDIyfSwKICAgIHsgMTYsICA3LCAyM30sIHsgMTYsIDEwLCAgMX0sIHsgMTYsIDEwLCAgMn0sIHsgMTYsIDEwLCAgNX0sCiAgICB7IDE2LCAxMCwgIDl9LCB7IDE2LCAxMCwgMTd9LCB7IDE2LCAxMCwgMTl9LCB7IDE2LCAxMCwgMjF9LAogICAgeyAxNiwgMTAsIDIzfSwgeyAxNiwgMTEsICAxfSwgeyAxNiwgMTEsICA1fSwgeyAxNiwgMTEsIDIyfSwKICAgIHsgMTYsIDEyLCAgMX0sIHsgMTYsIDEyLCAgNX0sIHsgMTYsIDEyLCAyM30sIHsgMTYsIDEzLCAgMX0sCiAgICB7IDE2LCAxMywgIDJ9LCB7IDE2LCAxMywgIDV9LCB7IDE2LCAxMywgIDl9LCB7IDE2LCAxMywgMTd9LAogICAgeyAxNiwgMTMsIDE5fSwgeyAxNiwgMTMsIDIxfSwgeyAxNiwgMTMsIDIzfSwgeyAxNiwgMTQsICAxfSwKICAgIHsgMTYsIDE0LCAgNX0sIHsgMTYsIDE0LCAgOX0sIHsgMTYsIDE0LCAyM30sIHsgMTYsIDE4LCAgMX0sCiAgICB7IDE2LCAxOCwgIDV9LCB7IDE2LCAxOCwgIDl9LCB7IDE2LCAxOCwgMTd9LCB7IDE2LCAxOCwgMTl9LAogICAgeyAxNiwgMTgsIDIxfSwgeyAxNiwgMTgsIDIzfSwgeyAxNiwgMTksICAxfSwgeyAxNiwgMTksIDE3fSwKICAgIHsgMTYsIDIwLCAgMX0sIHsgMTYsIDIwLCAgMn0sIHsgMTYsIDIwLCAgNX0sIHsgMTYsIDIwLCAgOX0sCiAgICB7IDE2LCAyMCwgMTd9LCB7IDE2LCAyMCwgMTl9LCB7IDE2LCAyMCwgMjF9LCB7IDE2LCAyMCwgMjN9LAogICAgeyAxNiwgMjEsICAxfSwgeyAxNiwgMjEsIDIyfSwgeyAxNiwgMjIsICAxfSwgeyAxNiwgMjIsICA1fSwKICAgIHsgMTYsIDIzLCAgMX0sIHsgMTYsIDIzLCAgNX0sIHsgMTYsIDIzLCAgOX0sIHsgMTYsIDIzLCAxN30sCiAgICB7IDE2LCAyMywgMTl9LCB7IDE2LCAyMywgMjF9LCB7IDE2LCAyMywgMjN9LCB7IDE2LCAyNiwgIDF9LAogICAgeyAxNiwgMjYsICA1fSwgeyAxNiwgMjYsICA5fSwgeyAxNiwgMjYsIDE3fSwgeyAxNiwgMjYsIDIzfSwKICAgIHsgMTYsIDI3LCAgMX0sIHsgMTYsIDI3LCAgMn0sIHsgMTYsIDI3LCAgNX0sIHsgMTYsIDI3LCAgOX0sCiAgICB7IDE2LCAyNywgMTd9LCB7IDE2LCAyNywgMTl9LCB7IDE2LCAyNywgMjF9LCB7IDE2LCAyNywgMjN9LAogICAgeyAxNiwgMjksICAxfSwgeyAxNiwgMjksICAyfSwgeyAxNiwgMjksICA1fSwgeyAxNiwgMjksICA4fSwKICAgIHsgMTYsIDI5LCAgOX0sIHsgMTYsIDI5LCAxMH0sIHsgMTYsIDI5LCAxN30sIHsgMTYsIDI5LCAxOX0sCiAgICB7IDE2LCAyOSwgMjF9LCB7IDE2LCAyOSwgMjN9LCB7IDE3LCAgMywgIDF9LCB7IDE3LCAgMywgIDJ9LAogICAgeyAxNywgIDMsICA1fSwgeyAxNywgIDMsICA5fSwgeyAxNywgIDMsIDE3fSwgeyAxNywgIDMsIDE5fSwKICAgIHsgMTcsICAzLCAyMX0sIHsgMTcsICAzLCAyM30sIHsgMTcsICA0LCAgMX0sIHsgMTcsICA0LCAgMn0sCiAgICB7IDE3LCAgNCwgIDV9LCB7IDE3LCAgNCwgIDl9LCB7IDE3LCAgNCwgMTd9LCB7IDE3LCAgNCwgMTl9LAogICAgeyAxNywgIDQsIDIxfSwgeyAxNywgIDQsIDIyfSwgeyAxNywgIDQsIDIzfSwgeyAxNywgIDUsICAxfSwKICAgIHsgMTcsICA1LCAgMn0sIHsgMTcsICA1LCAyM30sIHsgMTcsICA3LCAgMX0sIHsgMTcsICA3LCAgMn0sCiAgICB7IDE3LCAgNywgIDV9LCB7IDE3LCAgNywgIDh9LCB7IDE3LCAgNywgIDl9LCB7IDE3LCAgNywgMTd9LAogICAgeyAxNywgIDcsIDE5fSwgeyAxNywgIDcsIDIxfSwgeyAxNywgIDcsIDIyfSwgeyAxNywgIDcsIDIzfSwKICAgIHsgMTcsIDEwLCAgMX0sIHsgMTcsIDEwLCAgMn0sIHsgMTcsIDEwLCAgNX0sIHsgMTcsIDEwLCAgOX0sCiAgICB7IDE3LCAxMCwgMTd9LCB7IDE3LCAxMCwgMTl9LCB7IDE3LCAxMCwgMjF9LCB7IDE3LCAxMCwgMjN9LAogICAgeyAxNywgMTEsICAxfSwgeyAxNywgMTEsICA1fSwgeyAxNywgMTEsICA5fSwgeyAxNywgMTEsIDE3fSwKICAgIHsgMTcsIDExLCAxOX0sIHsgMTcsIDExLCAyMX0sIHsgMTcsIDExLCAyMn0sIHsgMTcsIDExLCAyM30sCiAgICB7IDE3LCAxMiwgIDF9LCB7IDE3LCAxMywgIDF9LCB7IDE3LCAxMywgIDJ9LCB7IDE3LCAxMywgIDV9LAogICAgeyAxNywgMTMsICA5fSwgeyAxNywgMTMsIDE3fSwgeyAxNywgMTMsIDE5fSwgeyAxNywgMTMsIDIxfSwKICAgIHsgMTcsIDEzLCAyM30sIHsgMTcsIDE0LCAgMX0sIHsgMTcsIDE0LCAgMn0sIHsgMTcsIDE0LCAgNX0sCiAgICB7IDE3LCAxNCwgIDl9LCB7IDE3LCAxNCwgMTd9LCB7IDE3LCAxNCwgMjN9LCB7IDE3LCAxNSwgIDF9LAogICAgeyAxNywgMTUsIDIzfSwgeyAxNywgMTgsICAxfSwgeyAxNywgMTgsICA5fSwgeyAxNywgMTksICAxfSwKICAgIHsgMTcsIDIwLCAgMX0sIHsgMTcsIDIwLCAgMn0sIHsgMTcsIDIwLCAgNX0sIHsgMTcsIDIwLCAgOX0sCiAgICB7IDE3LCAyMCwgMTd9LCB7IDE3LCAyMCwgMTl9LCB7IDE3LCAyMCwgMjF9LCB7IDE3LCAyMCwgMjN9LAogICAgeyAxNywgMjEsICAxfSwgeyAxNywgMjEsICA1fSwgeyAxNywgMjEsICA5fSwgeyAxNywgMjEsIDIzfSwKICAgIHsgMTcsIDIyLCAgMX0sIHsgMTcsIDIyLCAyM30sIHsgMTcsIDIzLCAgMX0sIHsgMTcsIDIzLCAgMn0sCiAgICB7IDE3LCAyMywgIDV9LCB7IDE3LCAyMywgIDl9LCB7IDE3LCAyMywgMTd9LCB7IDE3LCAyMywgMTl9LAogICAgeyAxNywgMjMsIDIxfSwgeyAxNywgMjMsIDIzfSwgeyAxNywgMjYsICAxfSwgeyAxNywgMjYsICA1fSwKICAgIHsgMTcsIDI2LCAgOX0sIHsgMTcsIDI2LCAxN30sIHsgMTcsIDI3LCAgMX0sIHsgMTcsIDI3LCAgMn0sCiAgICB7IDE3LCAyNywgIDV9LCB7IDE3LCAyNywgIDl9LCB7IDE3LCAyNywgMTd9LCB7IDE3LCAyNywgMTl9LAogICAgeyAxNywgMjcsIDIzfSwgeyAxNywgMjksICAxfSwgeyAxNywgMjksICAyfSwgeyAxNywgMjksICA1fSwKICAgIHsgMTcsIDI5LCAgOX0sIHsgMTcsIDI5LCAxN30sIHsgMTcsIDI5LCAxOX0sIHsgMTcsIDI5LCAyMX0sCiAgICB7IDE3LCAyOSwgMjN9LCB7IDE4LCAgMywgIDF9LCB7IDE4LCAgMywgIDJ9LCB7IDE4LCAgMywgIDV9LAogICAgeyAxOCwgIDMsICA5fSwgeyAxOCwgIDMsIDEwfSwgeyAxOCwgIDMsIDE3fSwgeyAxOCwgIDMsIDE5fSwKICAgIHsgMTgsICAzLCAyMX0sIHsgMTgsICAzLCAyMn0sIHsgMTgsICAzLCAyM30sIHsgMTgsICA0LCAgMX0sCiAgICB7IDE4LCAgNCwgIDJ9LCB7IDE4LCAgNCwgIDV9LCB7IDE4LCAgNCwgIDl9LCB7IDE4LCAgNCwgMTd9LAogICAgeyAxOCwgIDQsIDE5fSwgeyAxOCwgIDQsIDIxfSwgeyAxOCwgIDQsIDIyfSwgeyAxOCwgIDQsIDIzfSwKICAgIHsgMTgsICA1LCAgMX0sIHsgMTgsICA1LCAyM30sIHsgMTgsICA3LCAgMX0sIHsgMTgsICA3LCAgMn0sCiAgICB7IDE4LCAgNywgIDV9LCB7IDE4LCAgNywgIDl9LCB7IDE4LCAgNywgMTF9LCB7IDE4LCAgNywgMTd9LAogICAgeyAxOCwgIDcsIDE5fSwgeyAxOCwgIDcsIDIxfSwgeyAxOCwgIDcsIDIyfSwgeyAxOCwgIDcsIDIzfSwKICAgIHsgMTgsIDEwLCAgMX0sIHsgMTgsIDEwLCAgMn0sIHsgMTgsIDEwLCAgNX0sIHsgMTgsIDEwLCAgOX0sCiAgICB7IDE4LCAxMCwgMTd9LCB7IDE4LCAxMCwgMTl9LCB7IDE4LCAxMCwgMjF9LCB7IDE4LCAxMCwgMjN9LAogICAgeyAxOCwgMTEsICAxfSwgeyAxOCwgMTEsICA1fSwgeyAxOCwgMTEsIDIyfSwgeyAxOCwgMTIsICAxfSwKICAgIHsgMTgsIDEyLCAgNX0sIHsgMTgsIDEzLCAgMX0sIHsgMTgsIDEzLCAgMn0sIHsgMTgsIDEzLCAgNX0sCiAgICB7IDE4LCAxMywgIDl9LCB7IDE4LCAxMywgMTd9LCB7IDE4LCAxMywgMTl9LCB7IDE4LCAxMywgMjF9LAogICAgeyAxOCwgMTMsIDIzfSwgeyAxOCwgMTMsIDI4fSwgeyAxOCwgMTQsICAxfSwgeyAxOCwgMTQsICA1fSwKICAgIHsgMTgsIDE1LCAgMX0sIHsgMTgsIDE4LCAgMX0sIHsgMTgsIDE4LCAgNX0sIHsgMTgsIDE4LCAyMX0sCiAgICB7IDE4LCAxOCwgMjN9LCB7IDE4LCAxOSwgIDF9LCB7IDE4LCAyMCwgIDF9LCB7IDE4LCAyMCwgIDJ9LAogICAgeyAxOCwgMjAsICA1fSwgeyAxOCwgMjAsICA5fSwgeyAxOCwgMjAsIDE3fSwgeyAxOCwgMjAsIDE5fSwKICAgIHsgMTgsIDIwLCAyMX0sIHsgMTgsIDIwLCAyM30sIHsgMTgsIDIxLCAgMX0sIHsgMTgsIDIxLCAyMn0sCiAgICB7IDE4LCAyMiwgIDF9LCB7IDE4LCAyMywgIDF9LCB7IDE4LCAyMywgIDJ9LCB7IDE4LCAyMywgIDV9LAogICAgeyAxOCwgMjMsICA5fSwgeyAxOCwgMjMsIDE3fSwgeyAxOCwgMjMsIDE5fSwgeyAxOCwgMjMsIDIzfSwKICAgIHsgMTgsIDI2LCAgMX0sIHsgMTgsIDI2LCAgNX0sIHsgMTgsIDI2LCAgOX0sIHsgMTgsIDI2LCAxN30sCiAgICB7IDE4LCAyNiwgMjN9LCB7IDE4LCAyNywgIDF9LCB7IDE4LCAyNywgIDJ9LCB7IDE4LCAyNywgIDV9LAogICAgeyAxOCwgMjcsICA4fSwgeyAxOCwgMjcsICA5fSwgeyAxOCwgMjcsIDExfSwgeyAxOCwgMjcsIDE3fSwKICAgIHsgMTgsIDI3LCAxOX0sIHsgMTgsIDI3LCAyMX0sIHsgMTgsIDI4LCAgMX0sIHsgMTgsIDI4LCAgNX0sCiAgICB7IDE4LCAyOCwgIDl9LCB7IDE4LCAyOCwgMTd9LCB7IDE4LCAyOCwgMTl9LCB7IDE4LCAyOSwgIDF9LAogICAgeyAxOCwgMjksICAyfSwgeyAxOCwgMjksICA1fSwgeyAxOCwgMjksICA5fSwgeyAxOCwgMjksIDE3fSwKICAgIHsgMTgsIDI5LCAxOX0sIHsgMTgsIDI5LCAyMX0sIHsgMTgsIDI5LCAyM30sIHsgMTksICAzLCAgMX0sCiAgICB7IDE5LCAgMywgIDJ9LCB7IDE5LCAgMywgIDN9LCB7IDE5LCAgMywgIDV9LCB7IDE5LCAgMywgIDl9LAogICAgeyAxOSwgIDMsIDExfSwgeyAxOSwgIDMsIDE3fSwgeyAxOSwgIDMsIDE5fSwgeyAxOSwgIDMsIDIxfSwKICAgIHsgMTksICAzLCAyMn0sIHsgMTksICAzLCAyM30sIHsgMTksICAzLCAyN30sIHsgMTksICA0LCAgMX0sCiAgICB7IDE5LCAgNCwgIDJ9LCB7IDE5LCAgNCwgIDV9LCB7IDE5LCAgNCwgIDl9LCB7IDE5LCAgNCwgMTd9LAogICAgeyAxOSwgIDQsIDE5fSwgeyAxOSwgIDQsIDIxfSwgeyAxOSwgIDQsIDIyfSwgeyAxOSwgIDQsIDIzfSwKICAgIHsgMTksICA1LCAgMX0sIHsgMTksICA1LCAgMn0sIHsgMTksICA3LCAgMX0sIHsgMTksICA3LCAgMn0sCiAgICB7IDE5LCAgNywgIDV9LCB7IDE5LCAgNywgIDl9LCB7IDE5LCAgNywgMTd9LCB7IDE5LCAgNywgMTl9LAogICAgeyAxOSwgIDcsIDIxfSwgeyAxOSwgIDcsIDIyfSwgeyAxOSwgIDcsIDIzfSwgeyAxOSwgMTAsICAxfSwKICAgIHsgMTksIDEwLCAgMn0sIHsgMTksIDEwLCAgNX0sIHsgMTksIDEwLCAgOX0sIHsgMTksIDEwLCAxN30sCiAgICB7IDE5LCAxMCwgMTl9LCB7IDE5LCAxMCwgMjF9LCB7IDE5LCAxMCwgMjN9LCB7IDE5LCAxMSwgIDF9LAogICAgeyAxOSwgMTEsICA1fSwgeyAxOSwgMTEsICA5fSwgeyAxOSwgMTEsIDE3fSwgeyAxOSwgMTEsIDE5fSwKICAgIHsgMTksIDExLCAyMn0sIHsgMTksIDExLCAyM30sIHsgMTksIDEyLCAgMX0sIHsgMTksIDEyLCAgOX0sCiAgICB7IDE5LCAxMiwgMTl9LCB7IDE5LCAxMiwgMjF9LCB7IDE5LCAxMywgIDF9LCB7IDE5LCAxMywgIDJ9LAogICAgeyAxOSwgMTMsICA1fSwgeyAxOSwgMTMsICA5fSwgeyAxOSwgMTMsIDE3fSwgeyAxOSwgMTMsIDE5fSwKICAgIHsgMTksIDEzLCAyMX0sIHsgMTksIDEzLCAyM30sIHsgMTksIDE0LCAgMX0sIHsgMTksIDE0LCAyM30sCiAgICB7IDE5LCAxOCwgIDF9LCB7IDE5LCAxOCwgIDV9LCB7IDE5LCAxOSwgIDF9LCB7IDE5LCAxOSwgIDV9LAogICAgeyAxOSwgMTksICA5fSwgeyAxOSwgMTksIDE5fSwgeyAxOSwgMTksIDIxfSwgeyAxOSwgMjAsICAxfSwKICAgIHsgMTksIDIwLCAgMn0sIHsgMTksIDIwLCAgNX0sIHsgMTksIDIwLCAgOH0sIHsgMTksIDIwLCAgOX0sCiAgICB7IDE5LCAyMCwgMTF9LCB7IDE5LCAyMCwgMTd9LCB7IDE5LCAyMCwgMTl9LCB7IDE5LCAyMCwgMjF9LAogICAgeyAxOSwgMjAsIDIzfSwgeyAxOSwgMjEsICAxfSwgeyAxOSwgMjEsIDIzfSwgeyAxOSwgMjMsICAxfSwKICAgIHsgMTksIDIzLCAgNX0sIHsgMTksIDIzLCAgOX0sIHsgMTksIDIzLCAxN30sIHsgMTksIDIzLCAyMX0sCiAgICB7IDE5LCAyNiwgIDF9LCB7IDE5LCAyNiwgIDV9LCB7IDE5LCAyNiwgIDl9LCB7IDE5LCAyNiwgMTd9LAogICAgeyAxOSwgMjYsIDIxfSwgeyAxOSwgMjYsIDIzfSwgeyAxOSwgMjcsICAxfSwgeyAxOSwgMjcsICA1fSwKICAgIHsgMTksIDI3LCAgOX0sIHsgMTksIDI3LCAxN30sIHsgMTksIDI3LCAxOX0sIHsgMTksIDI3LCAyMX0sCiAgICB7IDE5LCAyOSwgIDF9LCB7IDE5LCAyOSwgIDJ9LCB7IDE5LCAyOSwgIDV9LCB7IDE5LCAyOSwgIDl9LAogICAgeyAxOSwgMjksIDE3fSwgeyAxOSwgMjksIDE5fSwgeyAxOSwgMjksIDIxfSwgeyAxOSwgMjksIDIzfSwKICAgIHsgMjAsICAzLCAgMX0sIHsgMjAsICAzLCAgMn0sIHsgMjAsICAzLCAgNX0sIHsgMjAsICAzLCAgOX0sCiAgICB7IDIwLCAgMywgMTR9LCB7IDIwLCAgMywgMTd9LCB7IDIwLCAgMywgMTl9LCB7IDIwLCAgMywgMjF9LAogICAgeyAyMCwgIDMsIDIzfSwgeyAyMCwgIDQsICAxfSwgeyAyMCwgIDQsICAyfSwgeyAyMCwgIDQsICA1fSwKICAgIHsgMjAsICA0LCAgOX0sIHsgMjAsICA0LCAxN30sIHsgMjAsICA0LCAxOX0sIHsgMjAsICA0LCAyMX0sCiAgICB7IDIwLCAgNCwgMjJ9LCB7IDIwLCAgNCwgMjN9LCB7IDIwLCAgNSwgIDF9LCB7IDIwLCAgNSwgMjN9LAogICAgeyAyMCwgIDcsICAxfSwgeyAyMCwgIDcsICAyfSwgeyAyMCwgIDcsICA1fSwgeyAyMCwgIDcsICA5fSwKICAgIHsgMjAsICA3LCAxMX0sIHsgMjAsICA3LCAxN30sIHsgMjAsICA3LCAxOX0sIHsgMjAsICA3LCAyMX0sCiAgICB7IDIwLCAgNywgMjN9LCB7IDIwLCAxMCwgIDF9LCB7IDIwLCAxMCwgIDJ9LCB7IDIwLCAxMCwgIDV9LAogICAgeyAyMCwgMTAsICA5fSwgeyAyMCwgMTAsIDE3fSwgeyAyMCwgMTAsIDE5fSwgeyAyMCwgMTAsIDIxfSwKICAgIHsgMjAsIDEwLCAyM30sIHsgMjAsIDExLCAgMX0sIHsgMjAsIDExLCAgMn0sIHsgMjAsIDExLCAgNX0sCiAgICB7IDIwLCAxMSwgIDl9LCB7IDIwLCAxMSwgMTd9LCB7IDIwLCAxMSwgMTl9LCB7IDIwLCAxMSwgMjF9LAogICAgeyAyMCwgMTEsIDIyfSwgeyAyMCwgMTEsIDIzfSwgeyAyMCwgMTIsICAxfSwgeyAyMCwgMTIsICA1fSwKICAgIHsgMjAsIDEyLCAgOX0sIHsgMjAsIDEyLCAxOX0sIHsgMjAsIDEzLCAgMX0sIHsgMjAsIDEzLCAgMn0sCiAgICB7IDIwLCAxMywgIDV9LCB7IDIwLCAxMywgIDl9LCB7IDIwLCAxMywgMTR9LCB7IDIwLCAxMywgMTd9LAogICAgeyAyMCwgMTMsIDE5fSwgeyAyMCwgMTMsIDIxfSwgeyAyMCwgMTMsIDIzfSwgeyAyMCwgMTMsIDI3fSwKICAgIHsgMjAsIDE0LCAgMX0sIHsgMjAsIDE0LCAgMn0sIHsgMjAsIDE0LCAgNX0sIHsgMjAsIDE0LCAgOX0sCiAgICB7IDIwLCAxNCwgMjF9LCB7IDIwLCAxNCwgMjN9LCB7IDIwLCAxNSwgIDF9LCB7IDIwLCAxNSwgIDJ9LAogICAgeyAyMCwgMTUsICA1fSwgeyAyMCwgMTUsIDIxfSwgeyAyMCwgMTUsIDIzfSwgeyAyMCwgMTgsICAxfSwKICAgIHsgMjAsIDE4LCAgMn0sIHsgMjAsIDE4LCAgNX0sIHsgMjAsIDE4LCAgOX0sIHsgMjAsIDE4LCAxOX0sCiAgICB7IDIwLCAxOCwgMjF9LCB7IDIwLCAxOCwgMjN9LCB7IDIwLCAxOSwgIDF9LCB7IDIwLCAxOSwgIDV9LAogICAgeyAyMCwgMTksICA5fSwgeyAyMCwgMTksIDE5fSwgeyAyMCwgMTksIDIxfSwgeyAyMCwgMjAsICAxfSwKICAgIHsgMjAsIDIwLCAgMn0sIHsgMjAsIDIwLCAgNX0sIHsgMjAsIDIwLCAgOX0sIHsgMjAsIDIwLCAxNH0sCiAgICB7IDIwLCAyMCwgMTd9LCB7IDIwLCAyMCwgMjF9LCB7IDIwLCAyMCwgMjN9LCB7IDIwLCAyMSwgIDF9LAogICAgeyAyMCwgMjEsICA1fSwgeyAyMCwgMjEsICA5fSwgeyAyMCwgMjEsIDE3fSwgeyAyMCwgMjEsIDIzfSwKICAgIHsgMjAsIDIyLCAgMX0sIHsgMjAsIDIyLCAgMn0sIHsgMjAsIDIyLCAgNX0sIHsgMjAsIDIyLCAgOX0sCiAgICB7IDIwLCAyMiwgMjN9LCB7IDIwLCAyMywgIDF9LCB7IDIwLCAyMywgIDJ9LCB7IDIwLCAyMywgIDV9LAogICAgeyAyMCwgMjMsICA5fSwgeyAyMCwgMjMsIDE3fSwgeyAyMCwgMjMsIDE5fSwgeyAyMCwgMjMsIDIxfSwKICAgIHsgMjAsIDIzLCAyM30sIHsgMjAsIDI2LCAgMX0sIHsgMjAsIDI2LCAgMn0sIHsgMjAsIDI2LCAgNX0sCiAgICB7IDIwLCAyNiwgIDl9LCB7IDIwLCAyNiwgMTd9LCB7IDIwLCAyNiwgMjF9LCB7IDIwLCAyNiwgMjN9LAogICAgeyAyMCwgMjcsICAxfSwgeyAyMCwgMjcsICAyfSwgeyAyMCwgMjcsICA1fSwgeyAyMCwgMjcsICA3fSwKICAgIHsgMjAsIDI3LCAgOH0sIHsgMjAsIDI3LCAgOX0sIHsgMjAsIDI3LCAxMH0sIHsgMjAsIDI3LCAxN30sCiAgICB7IDIwLCAyNywgMTl9LCB7IDIwLCAyNywgMjF9LCB7IDIwLCAyNywgMjN9LCB7IDIwLCAyNywgMjd9LAogICAgeyAyMCwgMjgsICAxfSwgeyAyMCwgMjgsICA1fSwgeyAyMCwgMjgsICA5fSwgeyAyMCwgMjgsIDE3fSwKICAgIHsgMjAsIDI4LCAxOX0sIHsgMjAsIDI4LCAyM30sIHsgMjAsIDI5LCAgMX0sIHsgMjAsIDI5LCAgMn0sCiAgICB7IDIwLCAyOSwgIDV9LCB7IDIwLCAyOSwgIDl9LCB7IDIwLCAyOSwgMTd9LCB7IDIwLCAyOSwgMTl9LAogICAgeyAyMCwgMjksIDIxfSwgeyAyMCwgMjksIDIzfSwKfTsKCgpzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQga3NfdGFibGUyW11bNF0gPQp7CiAgICB7MHhhNGJmLCAgMSwgIDMsICAxfSwgIHsweGE0YzAsICAxLCAgNCwgIDF9LAogICAgezB4YTRjMSwgIDEsICA1LCAgMX0sICB7MHhhNGMyLCAgMSwgIDYsICAxfSwKICAgIHsweGE0YzMsICAxLCAgNywgIDF9LCAgezB4YTRjNCwgIDEsIDEwLCAgMX0sCiAgICB7MHhhNGM1LCAgMSwgMTEsICAxfSwgIHsweGE0YzYsICAxLCAxMiwgIDF9LAogICAgezB4YTRjNywgIDEsIDEzLCAgMX0sICB7MHhhNGM4LCAgMSwgMTQsICAxfSwKICAgIHsweGE0YzksICAxLCAxNSwgIDF9LCAgezB4YTRjYSwgIDEsIDE4LCAgMX0sCiAgICB7MHhhNGNiLCAgMSwgMTksICAxfSwgIHsweGE0Y2MsICAxLCAyMCwgIDF9LAogICAgezB4YTRjZCwgIDEsIDIxLCAgMX0sICB7MHhhNGNlLCAgMSwgMjIsICAxfSwKICAgIHsweGE0Y2YsICAxLCAyMywgIDF9LCAgezB4YTRkMCwgIDEsIDI2LCAgMX0sCiAgICB7MHhhNGQxLCAgMSwgMjcsICAxfSwgIHsweGE0ZDIsICAxLCAyOCwgIDF9LAogICAgezB4YTRkMywgIDEsIDI5LCAgMX0sICB7MHhhNGExLCAgMiwgIDIsICAxfSwKICAgIHsweGE0YTIsICAzLCAgMiwgIDF9LCAgezB4YTRhNCwgIDQsICAyLCAgMX0sCiAgICB7MHhhNGE3LCAgNSwgIDIsICAxfSwgIHsweGE0YTgsICA2LCAgMiwgIDF9LAogICAgezB4YTRhOSwgIDcsICAyLCAgMX0sICB7MHhhNGIxLCAgOCwgIDIsICAxfSwKICAgIHsweGE0YjIsICA5LCAgMiwgIDF9LCAgezB4YTRiMywgMTAsICAyLCAgMX0sCiAgICB7MHhhNGI1LCAxMSwgIDIsICAxfSwgIHsweGE0YjYsIDEyLCAgMiwgIDF9LAogICAgezB4YTRiNywgMTMsICAyLCAgMX0sICB7MHhhNGI4LCAxNCwgIDIsICAxfSwKICAgIHsweGE0YjksIDE1LCAgMiwgIDF9LCAgezB4YTRiYSwgMTYsICAyLCAgMX0sCiAgICB7MHhhNGJiLCAxNywgIDIsICAxfSwgIHsweGE0YmMsIDE4LCAgMiwgIDF9LAogICAgezB4YTRiZCwgMTksICAyLCAgMX0sICB7MHhhNGJlLCAyMCwgIDIsICAxfSwKfTsKCi8qIMG2x9XH/CDDyry6IC0gv8+8usf8ILO5wNoguq/IrwogKiBjb252ZXJzaW9uOiBpbml0aWFsIHNvdW5kIG9mIGNvbXBvdW5kIHR5cGUgLSA/Pz8gb2YgY29tcGxldGlvbiB0eXBlCiAqLwoKc3RhdGljIGNvbnN0IGNoYXJfdSBqb2hhYl9mY29uX3RvX3dhbltdID0KewogICAgMCwKICAgIDB4ZDQsIDB4YTEsIDB4YTIsIDB4YTQsIDB4YTcsICAgIC8qICjDpL/yKSykoSykoiykpCykpyAqLwogICAgMHhhOCwgMHhhOSwgMHhiMSwgMHhiMiwgMHhiMywgICAgLyogpKgspKkspLEspLIspLMgKi8KICAgIDB4YjUsIDB4YjYsIDB4YjcsIDB4YjgsIDB4YjksICAgIC8qIKS1LKS2LKS3LKS4LKS5ICovCiAgICAweGJhLCAweGJiLCAweGJjLCAweGJkLCAweGJlICAgICAvKiCkuiykuyykvCykvSykviAqLwp9OwoKLyogwbbH1cf8IMHfvLogLT4gv8+8usf8ILO5wNoguq/IrwogKiBjb252ZXJzaW9uOiBtZWRpYWwgdm93ZWwgb2YgY29tcG91bmQgdHlwZSAtID8/PyBvZiBjb21wbGV0aW9uIHR5cGUKICovCgpzdGF0aWMgY29uc3QgY2hhcl91IGpvaGFiX3Zvd190b193YW5bXSA9CnsKICAgIDAsIDAsCiAgICAweGQ0LCAweGJmLCAweGMwLCAweGMxLCAweGMyLCAweGMzLAkvKiAow6S/8ikspL8spMAspMEspMIspMMgKi8KICAgIDAsIDAsCiAgICAweGM0LCAweGM1LCAweGM2LCAweGM3LCAweGM4LCAweGM5LCAvKiCkxCykxSykxiykxyykx6S/LKTHpMAgKi8KICAgIDAsIDAsCiAgICAweGNhLCAweGNiLCAweGNjLCAweGNkLCAweGNlLCAweGNmLCAvKiCkx6TTLKTLLKTMLKTMpMMspMykxCykzKTTICovCiAgICAwLCAwLAogICAgMHhkMCwgMHhkMSwgMHhkMiwgMHhkMwkgICAgIC8qIKTQLKTRLKTRpNMspNMgKi8KfTsKCi8qIMG2x9XH/CDBvry6IC0+IL/PvLrH/CCzucDaILqvyK8KICogY29udmVyc2lvbjogZmluYWwgY29uc29uYW50IG9mIGNvbXBvdW5kIHR5cGUgLSA/Pz8gb2YgY29tcGxldGlvbiB0eXBlCiAqLwoKc3RhdGljIGNvbnN0IGNoYXJfdSBqb2hhYl9sY29uX3RvX3dhbltdID0KewogICAgMCwKICAgIDB4ZDQsIDB4YTEsIDB4YTIsIDB4YTMsIDB4YTQsICAgIC8qICjDpL/yKSwgpKEsIKSiLCCkoaS1LCCkpCAqLwogICAgMHhhNSwgMHhhNiwgMHhhNywgMHhhOSwgMHhhYSwgICAgLyogpKSkuCwgpKSkviwgpKcsIKSpLCCkqaShICovCiAgICAweGFiLCAweGFjLCAweGFkLCAweGFlLCAweGFmLCAgICAvKiCkqaSxLCCkqaSyLCCkqaS1LCCkqaS8LCCkqaS9ICovCiAgICAweGIwLCAweGIxLCAwLCAgICAweGIyLCAweGI0LCAgICAvKiCkqaS+LCCksSwgMCwgpLIsIKSypLUgKi8KICAgIDB4YjUsIDB4YjYsIDB4YjcsIDB4YjgsIDB4YmEsICAgIC8qIKS1LCCktiwgpLcsIKS4LCCkuiAqLwogICAgMHhiYiwgMHhiYywgMHhiZCwgMHhiZQkgICAgIC8qIKS7LCCkvCwgpL0sIKS+ICovCn07CgogICAgc3RhdGljIHZvaWQKY29udmVydF9rc190b18zKAogICAgY29uc3QgY2hhcl91ICAgICpzcmMsCiAgICBpbnQJCSAgICAqZnAsCiAgICBpbnQJCSAgICAqbXAsCiAgICBpbnQJCSAgICAqbHApCnsKICAgIGludCBoID0gKnNyYzsKICAgIGludCBsb3cgPSAqKHNyYyArIDEpOwogICAgaW50IGM7CiAgICBpbnQgaTsKCiAgICBpZiAoKGkgPSBoYW5faW5kZXgoaCwgbG93KSkgPj0gMAoJJiYgaSA8IChpbnQpKHNpemVvZihrc190YWJsZTEpL3NpemVvZihrc190YWJsZTFbMF0pKSkKICAgIHsKCSpmcCA9IGtzX3RhYmxlMVtpXVswXTsKCSptcCA9IGtzX3RhYmxlMVtpXVsxXTsKCSpscCA9IGtzX3RhYmxlMVtpXVsyXTsKICAgIH0KICAgIGVsc2UKICAgIHsKCWMgPSAoaCA8PCA4KSB8IGxvdzsKCWZvciAoaSA9IDA7IGkgPCA0MDsgaSsrKQoJICAgIGlmIChrc190YWJsZTJbaV1bMF0gPT0gYykKCSAgICB7CgkJKmZwID0ga3NfdGFibGUyW2ldWzFdOwoJCSptcCA9IGtzX3RhYmxlMltpXVsyXTsKCQkqbHAgPSBrc190YWJsZTJbaV1bM107CgkJcmV0dXJuOwoJICAgIH0KCSpmcCA9IDB4ZmY7CS8qILHXt6HHyCDE2rXlIChncmFwaGljIGNvZGUpICovCgkqbXAgPSBoOwoJKmxwID0gbG93OwogICAgfQp9CgogICAgc3RhdGljIGludApjb252ZXJ0XzNfdG9fa3MoCiAgICBpbnQJICAgIGZ2LAogICAgaW50CSAgICBtdiwKICAgIGludAkgICAgbHYsCiAgICBjaGFyX3UgICpkZXMpCnsKICAgIGNoYXJfdSBrZXlbM107CiAgICByZWdpc3RlciBpbnQgaGksIGxvLCBtaSA9IDAsIHJlc3VsdCwgZm91bmQ7CgogICAgaWYgKGZ2ID09IDB4ZmYpCiAgICB7CglkZXNbMF0gPSBtdjsKCWRlc1sxXSA9IGx2OwoJcmV0dXJuIDI7CiAgICB9CiAgICBrZXlbMF0gPSBmdjsKICAgIGtleVsxXSA9IG12OwogICAga2V5WzJdID0gbHY7CiAgICBsbyA9IDA7CiAgICBoaSA9IHNpemVvZihrc190YWJsZTEpLzMgLSAxOwogICAgZm91bmQgPSAwOwogICAgd2hpbGUgKGxvICsgMSA8IGhpKQogICAgewoJbWkgPSAobG8gKyBoaSkvMjsKCXJlc3VsdCA9IFNUUk5DTVAoa3NfdGFibGUxW21pXSwga2V5LCAzKTsKCWlmIChyZXN1bHQgPT0gMCkKCXsKCSAgICBmb3VuZCA9IDE7CgkgICAgYnJlYWs7Cgl9CgllbHNlIGlmIChyZXN1bHQgPiAwKQoJICAgIGhpID0gbWk7CgllbHNlCgkgICAgbG8gPSBtaTsKICAgIH0KICAgIGlmICghZm91bmQpCiAgICB7CglpZiAoIVNUUk5DTVAoa3NfdGFibGUxW2xvXSwga2V5LCAzKSkKCXsKCSAgICBmb3VuZCA9IDE7CgkgICAgbWkgPSBsbzsKCX0KCWlmICghU1RSTkNNUChrc190YWJsZTFbaGldLCBrZXksIDMpKQoJewoJICAgIGZvdW5kID0gMTsKCSAgICBtaSA9IGhpOwoJfQogICAgfQogICAgaWYgKCFmb3VuZCkKICAgIHsKCWZvciAobWkgPSAwOyBtaSA8IDQwOyBtaSsrKQoJICAgIGlmIChrc190YWJsZTJbbWldWzFdID09IGZ2ICYmIGtzX3RhYmxlMlttaV1bMl0gPT0gbXYgJiYKCQlrc190YWJsZTJbbWldWzNdID09IGx2KQoJICAgIHsKCQlkZXNbMF0gPSAodW5zaWduZWQpKGtzX3RhYmxlMlttaV1bMF0pID4+IDg7CgkJZGVzWzFdID0ga3NfdGFibGUyW21pXVswXTsKCQlyZXR1cm4gMjsJLyogZm91bmQgKi8KCSAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CglkZXNbMF0gPSBtaSAvICgweGZmLTB4YTEpICsgMHhiMDsKCWRlc1sxXSA9IG1pICUgKDB4ZmYtMHhhMSkgKyAweGExOwoJcmV0dXJuIDI7CQkvKiBmb3VuZCAqLwogICAgfQoKICAgIC8qIL/PvLrH/CDHpb+hIL74tNkuIGBgS1MgQyA1NjAxIC0gMTk5MiDBpLq4ILGzyK+/6yC6zsijIMfYvLMnJwogICAgICogMy4zIMD9v6EgvLO47bXIILnmuf3AuLfOIGVuY29kaW5nIMfRtNkuCiAgICAgKi8KCiAgICAqZGVzKysgPSAweGE0OwkJICAgICAvKiDDpL/yICovCiAgICAqZGVzKysgPSAweGQ0OwogICAgKmRlcysrID0gMHhhNDsJCSAgICAgLyogs7nA2rTCILjwtc4gYTQgx+C/oSDA1rTZLiAqLwogICAgKmRlcysrID0gam9oYWJfZmNvbl90b193YW5bZnZdOwogICAgKmRlcysrID0gMHhhNDsKICAgICpkZXMrKyA9IGpvaGFiX3Zvd190b193YW5bbXZdOwogICAgKmRlcysrID0gMHhhNDsKICAgICpkZXMrKyA9IGpvaGFiX2xjb25fdG9fd2FuW2x2XTsKICAgIHJldHVybiA4Owp9CgogICAgY2hhcl91ICoKaGFuZ3VsX3N0cmluZ19jb252ZXJ0KGNoYXJfdSAqYnVmLCBpbnQgKnBfbGVuKQp7CiAgICBjaGFyX3UgKnRtcGJ1ZiA9IE5VTEw7CiAgICB2aW1jb252X1QgdmM7CgogICAgaWYgKGVuY191dGY4KQogICAgewoJdmMudmNfdHlwZSA9IENPTlZfTk9ORTsKCWlmIChjb252ZXJ0X3NldHVwKCZ2YywgKGNoYXJfdSAqKSJldWMta3IiLCBwX2VuYykgPT0gT0spCgl7CgkgICAgdG1wYnVmID0gc3RyaW5nX2NvbnZlcnQoJnZjLCBidWYsIHBfbGVuKTsKCSAgICBjb252ZXJ0X3NldHVwKCZ2YywgTlVMTCwgTlVMTCk7Cgl9CiAgICB9CgogICAgcmV0dXJuIHRtcGJ1ZjsKfQoKICAgIGNoYXJfdSAqCmhhbmd1bF9jb21wb3NpbmdfYnVmZmVyX2dldChpbnQgKnBfbGVuKQp7CiAgICBjaGFyX3UgKnRtcGJ1ZiA9IE5VTEw7CgogICAgaWYgKGNvbXBvc2luZ19oYW5ndWwpCiAgICB7CglpbnQgbGVuID0gMjsKCgl0bXBidWYgPSBoYW5ndWxfc3RyaW5nX2NvbnZlcnQoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsICZsZW4pOwoJaWYgKHRtcGJ1ZiAhPSBOVUxMKQoJewoJICAgICpwX2xlbiA9IGxlbjsKCX0KCWVsc2UKCXsKCSAgICB0bXBidWYgPSB2aW1fc3RybnNhdmUoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIDIpOwoJICAgICpwX2xlbiA9IDI7Cgl9CiAgICB9CgogICAgcmV0dXJuIHRtcGJ1ZjsKfQo=