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/PyAoSG1tLi4uIElzIGl0IG5lZWRlZD8pICovCgkJY29udmVydF9rc190b18zKGJ1ZiwgJmYsICZtLCAmbCk7CgkgICAgfQoJICAgIGVsc2UKCSAgICB7CgkJY2hhcl91IHRtcFszXTsKCQlmID0gZmNvbihsYXN0X2wpOwoJCWNvbnZlcnRfM190b19jb2RlIChmLCBNX05VTEwsIExfTlVMTCwgdG1wKTsKCQlwdXNoICh0bXApOwoJICAgIH0KCSAgICBtID0gdm93KHQpOwoJICAgIGwgPSBMX05VTEw7CgkgICAgY29udmVydF8zX3RvX2NvZGUoZiwgbSwgbCwgYnVmICsgMik7CgkgICAgcHVzaChidWYgKyAyKTsKCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVF9ORVc7CgoJZGVmYXVsdDoKCSAgICBFTVNHKF8oIkUyNTY6IEhhbmd1bCBhdXRvbWF0YSBFUlJPUiIpKTsKCSAgICBicmVhazsKICAgIH0KICAgIHJldHVybiBBVVRPTUFUQV9FUlJPUjsgLyogUnJFZUFhTGxMbFl5IEVlUnJSck9vUnIgKi8KfQoKICAgIHN0YXRpYyBpbnQKaGFuZ3VsX2F1dG9tYXRhMyhjaGFyX3UgKmJ1ZiwgaW50X3UgKmMpCnsKICAgIGludCB0LCB0MjsKCiAgICBpZiAoKmMgPj0gJyEnICYmICpjIDw9ICd6JykKICAgIHsKCSpjIC09ICchJzsKCXQgPSB2YWx1ZV90YWJsZV9mb3JfM1sqY107Cglzd2l0Y2ggKGtpbmRfdGFibGVfZm9yXzNbKmNdKQoJewoJICAgIGNhc2UgRl9GOiAvKiDDyry6ua7A2iAoY2hhci4gb2YgYW4gaW5pdGlhbCBzb3VuZCkgKi8KCQlpZiAobSAhPSBNX05VTEwgfHwgc3AgPT0gMCkKCQl7CgkJICAgIC8qIMPKvLrAzCC68b76sMWzqiC02cC9ILHbwNoguPDAuLHiIL3DwNsKCQkgICAgICogRW1wdHkgJ2luaXRpYWwgc291bmQnLCBzbyBzdGFydGluZyBhdXRvbWF0YS4KCQkgICAgICovCgkJICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwoJCSAgICBmID0gdDsKCQkgICAgY29udmVydF8zX3RvX2NvZGUoZiwgTV9OVUxMLCBMX05VTEwsIGJ1Zik7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX05FVzsKCQl9CgkJaWYgKCh0MiA9IGNvbWZjb24zKGYsdCkpICE9IDApCS8qILq5wNrAvSAoZG91YmxlPyBjb25zb25hbnQpICovCgkJewoJCSAgICBmPXQyOwoJCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBNX05VTEwsIExfTlVMTCwgYnVmKTsKCQkgICAgcHVzaChidWYpOwoJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkJcmV0dXJuIEFVVE9NQVRBX0VSUk9SOwoKCSAgICBjYXNlIEZfTToJLyoguPDAvSAodm93ZWwpICovCgkJaWYgKG0gPT0gTV9OVUxMKQoJCXsKCQkgICAgaWYgKDIgIT0gY29udmVydF8zX3RvX2NvZGUoZiwgdCwgTF9OVUxMLGJ1ZikpCgkJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkJICAgIG0gPSB0OwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIGlmIChmID09IEZfTlVMTCkKCQkJcmV0dXJuIEFVVE9NQVRBX05FVzsKCQkgICAgZWxzZQoJCQlyZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkJaWYgKCh0MiA9IGNvbXZvdzMobSx0KSkpICAgIC8qILq5uPDAvSAoYSBkaXBodGhvbmcpICovCgkJewoJCSAgICBtID0gdDI7CgkJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIG0sIExfTlVMTCwgYnVmKTsKCQkgICAgcHVzaChidWYpOwoJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkJcmV0dXJuIEFVVE9NQVRBX0VSUk9SOwoKCSAgICBjYXNlIEZfTDoJLyogud7EpyAocHJvcD8pICovCgkJaWYgKG0gPT0gTV9OVUxMKQoJCSAgICByZXR1cm4gQVVUT01BVEFfRVJST1I7IC8qIMHfvLq++LTCIMG+vLogKi8KCQlpZiAobCA9PSBMX05VTEwpCgkJewoJCSAgICBpZiAoMiAhPSBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCB0LCBidWYpKQoJCSAgICB7CgkJCWwgPSBMX05VTEw7CgkJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCQkgICAgfQoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIGwgPSB0OwoJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkJaWYgKCh0MiA9IGNvbWNvbjMobCx0KSkgIT0gMCkJLyogurkgud7EpyA/PyAoZG91YmxlIHByb3A/KSAqLwoJCXsKCQkgICAgaWYgKDIgIT0gY29udmVydF8zX3RvX2NvZGUoZiwgbSwgdDIsIGJ1ZikpCgkJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkJICAgIHB1c2goYnVmKTsKCQkgICAgbCA9IHQyOwoJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkJcmV0dXJuIEFVVE9NQVRBX0VSUk9SOwoKCSAgICBjYXNlIEZfQTogLyogxq+89rmuwNqzqiC8/cDaIChzcGVjaWFsIGNoYXIuIG9yIG51bWJlcikgKi8KCQloYW5ndWxfaW5wdXRfY2xlYXIoKTsKCQkqYyA9IHQ7CgkJcmV0dXJuIEFVVE9NQVRBX1NQRUNJQUw7Cgl9CiAgICB9CiAgICBpZiAoKmMgPT0gQlMpCiAgICB7CglpZiAoc3AgPj0gNCkKCXsKCSAgICBwb3AoYnVmKTsKCSAgICBwb3AoYnVmKTsKCSAgICBjb252ZXJ0X2tzX3RvXzMoYnVmLCAmZiwgJm0sICZsKTsKCSAgICBwdXNoKGJ1Zik7CgkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7Cgl9CgllbHNlIGlmIChzcCA9PSAwKQoJewoJICAgIHJldHVybiBBVVRPTUFUQV9TUEVDSUFMOwoJfQoJZWxzZQoJewoJICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwoJICAgIHJldHVybiBBVVRPTUFUQV9OVUxMOwoJfQogICAgfQogICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CiAgICByZXR1cm4gQVVUT01BVEFfU1BFQ0lBTDsKfQoKICAgIHZvaWQKaGFuZ3VsX2tleWJvYXJkX3NldCh2b2lkKQp7CiAgICBpbnQJICAgIGtleWJvYXJkOwogICAgY2hhciAgICAqczsKCiAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCiAgICBpZiAoKHMgPSBnZXRlbnYoIlZJTV9LRVlCT0FSRCIpKSA9PSBOVUxMKQoJcyA9IGdldGVudigiSEFOR1VMX0tFWUJPQVJEX1RZUEUiKTsKCiAgICBpZiAocykKICAgIHsKCWlmICgqcyA9PSAnMicpCgkgICAga2V5Ym9hcmQgPSAyOwoJZWxzZQoJICAgIGtleWJvYXJkID0gMzsKCWhhbmd1bF9rZXlib2FyZF90eXBlID0ga2V5Ym9hcmQ7CiAgICB9Cn0KCiAgICBpbnQKaGFuZ3VsX2lucHV0X3Byb2Nlc3MoY2hhcl91ICpzLCBpbnQgbGVuKQp7CiAgICBpbnQgbjsKICAgIHVuc2lnbmVkIGludCBjOwogICAgY2hhcl91IGhhbmJ1ZlsyMF07CgogICAgaWYgKGxlbiA9PSAxKQoJLyogbm9ybWFsIGtleSBwcmVzcyAqLwoJYyA9ICpzOwogICAgZWxzZSBpZiAobGVuID09IDMgJiYgc1swXSA9PSBDU0kgJiYgc1sxXSA9PSAnaycgJiYgc1syXSA9PSAnYicpCiAgICB7CgkvKiBiYWNrc3BhY2UgKi8KCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJICAgIGMgPSBDdHJsX0g7CgllbHNlCgkgICAgcmV0dXJuIGxlbjsKICAgIH0KICAgIGVsc2UKICAgIHsKCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJICAgIHB1c2hfcmF3X2tleShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgMik7CgloYW5ndWxfaW5wdXRfY2xlYXIoKTsKCWNvbXBvc2luZ19oYW5ndWwgPSAwOwoJcmV0dXJuIGxlbjsKICAgIH0KCiAgICBpZiAoaGFuZ3VsX2tleWJvYXJkX3R5cGUgPT0gMikKCW4gPSBoYW5ndWxfYXV0b21hdGEyKGhhbmJ1ZiwgJmMpOwogICAgZWxzZQoJbiA9IGhhbmd1bF9hdXRvbWF0YTMoaGFuYnVmLCAmYyk7CgogICAgaWYgKG4gPT0gQVVUT01BVEFfQ09SUkVDVCkKICAgIHsKCVNUUk5DUFkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIGhhbmJ1ZiwgMik7CglndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CglyZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfTkVXKQogICAgewoJaWYgKGNvbXBvc2luZ19oYW5ndWwpCgkgICAgcHVzaF9yYXdfa2V5KGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCAyKTsKCVNUUk5DUFkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIGhhbmJ1ZiwgMik7Cgljb21wb3NpbmdfaGFuZ3VsID0gMTsKCWd1aV91cGRhdGVfY3Vyc29yKFRSVUUsIEZBTFNFKTsKCXJldHVybiAwOwogICAgfQogICAgZWxzZSBpZiAobiA9PSBBVVRPTUFUQV9DT1JSRUNUX05FVykKICAgIHsKCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJICAgIHB1c2hfcmF3X2tleShoYW5idWYsIDIpOwoJU1RSTkNQWShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgaGFuYnVmKzIsIDIpOwoJY29tcG9zaW5nX2hhbmd1bCA9IDE7CglndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CglyZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfTlVMTCkKICAgIHsKCWNvbXBvc2luZ19oYW5ndWwgPSAwOwoJZ3VpX3JlZHJhd19ibG9jayhndWkuY3Vyc29yX3JvdywgZ3VpLmN1cnNvcl9jb2wsCgkJCSBndWkuY3Vyc29yX3JvdywgZ3VpLmN1cnNvcl9jb2wgKyAxLAoJCQkgR1VJX01PTl9OT0NMRUFSKTsKCWd1aV91cGRhdGVfY3Vyc29yKFRSVUUsIEZBTFNFKTsKCXJldHVybiAwOwogICAgfQogICAgZWxzZSBpZiAobiA9PSBBVVRPTUFUQV9TUEVDSUFMKQogICAgewoJaWYgKGNvbXBvc2luZ19oYW5ndWwpCgl7CgkgICAgcHVzaF9yYXdfa2V5KGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCAyKTsKCSAgICBjb21wb3NpbmdfaGFuZ3VsID0gMDsKCX0KCSpzID0gYzsKCXJldHVybiAxOwogICAgfQogICAgZWxzZSBpZiAobiA9PSBBVVRPTUFUQV9FUlJPUikKICAgIHsKCXZpbV9iZWVwKEJPX0hBTkdVTCk7CglyZXR1cm4gMDsKICAgIH0KICAgIHJldHVybiBsZW47Cn0KCiAgICB2b2lkCmhhbmd1bF9pbnB1dF9jbGVhcih2b2lkKQp7CiAgICBzcCA9IDA7CiAgICBmID0gRl9OVUxMOwogICAgbSA9IE1fTlVMTDsKICAgIGwgPSBMX05VTEw7Cn0KCiNkZWZpbmUgaGFuX2luZGV4KGgsIGwpCSgoKGgpLTB4YjApKigweGZmLTB4YTEpKygobCktMHhhMSkpCgpzdGF0aWMgY29uc3QgY2hhcl91IGtzX3RhYmxlMVtdWzNdID0KewogICAgeyAgMiwgIDMsICAxfSwgeyAgMiwgIDMsICAyfSwgeyAgMiwgIDMsICA1fSwgeyAgMiwgIDMsICA4fSwKICAgIHsgIDIsICAzLCAgOX0sIHsgIDIsICAzLCAxMH0sIHsgIDIsICAzLCAxMX0sIHsgIDIsICAzLCAxN30sCiAgICB7ICAyLCAgMywgMTl9LCB7ICAyLCAgMywgMjB9LCB7ICAyLCAgMywgMjF9LCB7ICAyLCAgMywgMjJ9LAogICAgeyAgMiwgIDMsIDIzfSwgeyAgMiwgIDMsIDI0fSwgeyAgMiwgIDMsIDI1fSwgeyAgMiwgIDMsIDI3fSwKICAgIHsgIDIsICAzLCAyOH0sIHsgIDIsICAzLCAyOX0sIHsgIDIsICA0LCAgMX0sIHsgIDIsICA0LCAgMn0sCiAgICB7ICAyLCAgNCwgIDV9LCB7ICAyLCAgNCwgIDl9LCB7ICAyLCAgNCwgMTd9LCB7ICAyLCAgNCwgMTl9LAogICAgeyAgMiwgIDQsIDIxfSwgeyAgMiwgIDQsIDIyfSwgeyAgMiwgIDQsIDIzfSwgeyAgMiwgIDUsICAxfSwKICAgIHsgIDIsICA1LCAgMn0sIHsgIDIsICA1LCAgNX0sIHsgIDIsICA1LCAgOX0sIHsgIDIsICA1LCAyMX0sCiAgICB7ICAyLCAgNSwgMjN9LCB7ICAyLCAgNiwgIDF9LCB7ICAyLCAgNiwgIDV9LCB7ICAyLCAgNiwgIDl9LAogICAgeyAgMiwgIDcsICAxfSwgeyAgMiwgIDcsICAyfSwgeyAgMiwgIDcsICA1fSwgeyAgMiwgIDcsICA4fSwKICAgIHsgIDIsICA3LCAgOX0sIHsgIDIsICA3LCAxMX0sIHsgIDIsICA3LCAxN30sIHsgIDIsICA3LCAxOX0sCiAgICB7ICAyLCAgNywgMjF9LCB7ICAyLCAgNywgMjJ9LCB7ICAyLCAgNywgMjN9LCB7ICAyLCAgNywgMjR9LAogICAgeyAgMiwgIDcsIDI3fSwgeyAgMiwgIDcsIDI4fSwgeyAgMiwgIDcsIDI5fSwgeyAgMiwgMTAsICAxfSwKICAgIHsgIDIsIDEwLCAgNX0sIHsgIDIsIDEwLCAgOX0sIHsgIDIsIDEwLCAxN30sIHsgIDIsIDEwLCAxOX0sCiAgICB7ICAyLCAxMCwgMjF9LCB7ICAyLCAxMCwgMjJ9LCB7ICAyLCAxMCwgMjN9LCB7ICAyLCAxMSwgIDF9LAogICAgeyAgMiwgMTEsICAyfSwgeyAgMiwgMTEsICAzfSwgeyAgMiwgMTEsICA1fSwgeyAgMiwgMTEsICA4fSwKICAgIHsgIDIsIDExLCAgOX0sIHsgIDIsIDExLCAxN30sIHsgIDIsIDExLCAxOX0sIHsgIDIsIDExLCAyMX0sCiAgICB7ICAyLCAxMSwgMjJ9LCB7ICAyLCAxMSwgMjN9LCB7ICAyLCAxMSwgMjd9LCB7ICAyLCAxMiwgIDF9LAogICAgeyAgMiwgMTIsICA1fSwgeyAgMiwgMTIsICA5fSwgeyAgMiwgMTIsIDE5fSwgeyAgMiwgMTIsIDIxfSwKICAgIHsgIDIsIDEzLCAgMX0sIHsgIDIsIDEzLCAgMn0sIHsgIDIsIDEzLCAgNX0sIHsgIDIsIDEzLCAgOH0sCiAgICB7ICAyLCAxMywgIDl9LCB7ICAyLCAxMywgMTF9LCB7ICAyLCAxMywgMTN9LCB7ICAyLCAxMywgMTZ9LAogICAgeyAgMiwgMTMsIDE3fSwgeyAgMiwgMTMsIDE5fSwgeyAgMiwgMTMsIDIxfSwgeyAgMiwgMTMsIDIzfSwKICAgIHsgIDIsIDEzLCAyNH0sIHsgIDIsIDE0LCAgMX0sIHsgIDIsIDE0LCAgMn0sIHsgIDIsIDE0LCAgNX0sCiAgICB7ICAyLCAxNCwgIDl9LCB7ICAyLCAxNCwgMTF9LCB7ICAyLCAxNCwgMTd9LCB7ICAyLCAxNCwgMTl9LAogICAgeyAgMiwgMTQsIDIxfSwgeyAgMiwgMTQsIDIzfSwgeyAgMiwgMTUsICAxfSwgeyAgMiwgMTUsICA1fSwKICAgIHsgIDIsIDE1LCAgOX0sIHsgIDIsIDE1LCAxOX0sIHsgIDIsIDE1LCAyMn0sIHsgIDIsIDE1LCAyM30sCiAgICB7ICAyLCAxOCwgIDF9LCB7ICAyLCAxOCwgIDJ9LCB7ICAyLCAxOCwgIDV9LCB7ICAyLCAxOCwgIDl9LAogICAgeyAgMiwgMTgsIDE3fSwgeyAgMiwgMTgsIDE5fSwgeyAgMiwgMTgsIDIxfSwgeyAgMiwgMTgsIDIzfSwKICAgIHsgIDIsIDE5LCAgMX0sIHsgIDIsIDE5LCAgNX0sIHsgIDIsIDE5LCAgOX0sIHsgIDIsIDE5LCAxOX0sCiAgICB7ICAyLCAxOSwgMjF9LCB7ICAyLCAyMCwgIDF9LCB7ICAyLCAyMCwgIDJ9LCB7ICAyLCAyMCwgIDV9LAogICAgeyAgMiwgMjAsICA4fSwgeyAgMiwgMjAsICA5fSwgeyAgMiwgMjAsIDEwfSwgeyAgMiwgMjAsIDExfSwKICAgIHsgIDIsIDIwLCAxNn0sIHsgIDIsIDIwLCAxN30sIHsgIDIsIDIwLCAxOX0sIHsgIDIsIDIwLCAyMX0sCiAgICB7ICAyLCAyMCwgMjN9LCB7ICAyLCAyMCwgMjR9LCB7ICAyLCAyMSwgIDF9LCB7ICAyLCAyMSwgIDJ9LAogICAgeyAgMiwgMjEsICA1fSwgeyAgMiwgMjEsICA5fSwgeyAgMiwgMjEsIDIyfSwgeyAgMiwgMjEsIDIzfSwKICAgIHsgIDIsIDIyLCAgMX0sIHsgIDIsIDIyLCAyMX0sIHsgIDIsIDIzLCAgMX0sIHsgIDIsIDIzLCAgMn0sCiAgICB7ICAyLCAyMywgIDV9LCB7ICAyLCAyMywgIDl9LCB7ICAyLCAyMywgMTd9LCB7ICAyLCAyMywgMTl9LAogICAgeyAgMiwgMjMsIDIxfSwgeyAgMiwgMjYsICAxfSwgeyAgMiwgMjYsICA1fSwgeyAgMiwgMjYsICA5fSwKICAgIHsgIDIsIDI3LCAgMX0sIHsgIDIsIDI3LCAgMn0sIHsgIDIsIDI3LCAgNX0sIHsgIDIsIDI3LCAgOH0sCiAgICB7ICAyLCAyNywgIDl9LCB7ICAyLCAyNywgMTB9LCB7ICAyLCAyNywgMTd9LCB7ICAyLCAyNywgMTl9LAogICAgeyAgMiwgMjcsIDIxfSwgeyAgMiwgMjcsIDIzfSwgeyAgMiwgMjgsICAxfSwgeyAgMiwgMjksICAxfSwKICAgIHsgIDIsIDI5LCAgMn0sIHsgIDIsIDI5LCAgNX0sIHsgIDIsIDI5LCAgOH0sIHsgIDIsIDI5LCAgOX0sCiAgICB7ICAyLCAyOSwgMTF9LCB7ICAyLCAyOSwgMTd9LCB7ICAyLCAyOSwgMTl9LCB7ICAyLCAyOSwgMjF9LAogICAgeyAgMiwgMjksIDIzfSwgeyAgMiwgMjksIDI0fSwgeyAgMiwgMjksIDI4fSwgeyAgMywgIDMsICAxfSwKICAgIHsgIDMsICAzLCAgMn0sIHsgIDMsICAzLCAgM30sIHsgIDMsICAzLCAgNX0sIHsgIDMsICAzLCAgOX0sCiAgICB7ICAzLCAgMywgMTF9LCB7ICAzLCAgMywgMTd9LCB7ICAzLCAgMywgMTl9LCB7ICAzLCAgMywgMjF9LAogICAgeyAgMywgIDMsIDIyfSwgeyAgMywgIDMsIDIzfSwgeyAgMywgIDMsIDI3fSwgeyAgMywgIDQsICAxfSwKICAgIHsgIDMsICA0LCAgMn0sIHsgIDMsICA0LCAgNX0sIHsgIDMsICA0LCAgOX0sIHsgIDMsICA0LCAxN30sCiAgICB7ICAzLCAgNCwgMTl9LCB7ICAzLCAgNCwgMjF9LCB7ICAzLCAgNCwgMjJ9LCB7ICAzLCAgNCwgMjN9LAogICAgeyAgMywgIDUsICAxfSwgeyAgMywgIDUsICAyfSwgeyAgMywgIDUsICA5fSwgeyAgMywgIDcsICAxfSwKICAgIHsgIDMsICA3LCAgMn0sIHsgIDMsICA3LCAgM30sIHsgIDMsICA3LCAgNX0sIHsgIDMsICA3LCAgOX0sCiAgICB7ICAzLCAgNywgMTd9LCB7ICAzLCAgNywgMTl9LCB7ICAzLCAgNywgMjF9LCB7ICAzLCAgNywgMjJ9LAogICAgeyAgMywgIDcsIDIzfSwgeyAgMywgMTAsICAxfSwgeyAgMywgMTAsICAyfSwgeyAgMywgMTAsICA1fSwKICAgIHsgIDMsIDEwLCAxN30sIHsgIDMsIDEwLCAyMX0sIHsgIDMsIDEwLCAyM30sIHsgIDMsIDExLCAgMX0sCiAgICB7ICAzLCAxMSwgIDV9LCB7ICAzLCAxMSwgIDl9LCB7ICAzLCAxMSwgMjF9LCB7ICAzLCAxMSwgMjJ9LAogICAgeyAgMywgMTEsIDI3fSwgeyAgMywgMTIsICAxfSwgeyAgMywgMTMsICAxfSwgeyAgMywgMTMsICAyfSwKICAgIHsgIDMsIDEzLCAgNX0sIHsgIDMsIDEzLCAgN30sIHsgIDMsIDEzLCAgOX0sIHsgIDMsIDEzLCAxN30sCiAgICB7ICAzLCAxMywgMTl9LCB7ICAzLCAxMywgMjF9LCB7ICAzLCAxMywgMjN9LCB7ICAzLCAxMywgMjR9LAogICAgeyAgMywgMTMsIDI1fSwgeyAgMywgMTQsICAxfSwgeyAgMywgMTQsICAyfSwgeyAgMywgMTQsICA5fSwKICAgIHsgIDMsIDE0LCAyMn0sIHsgIDMsIDE0LCAyM30sIHsgIDMsIDE1LCAgMX0sIHsgIDMsIDE1LCAgMn0sCiAgICB7ICAzLCAxNSwgMjN9LCB7ICAzLCAxOCwgIDF9LCB7ICAzLCAxOCwgIDV9LCB7ICAzLCAxOCwgIDl9LAogICAgeyAgMywgMTgsIDE3fSwgeyAgMywgMTgsIDE5fSwgeyAgMywgMTgsIDIzfSwgeyAgMywgMTksICAxfSwKICAgIHsgIDMsIDIwLCAgMX0sIHsgIDMsIDIwLCAgMn0sIHsgIDMsIDIwLCAgNX0sIHsgIDMsIDIwLCAgOX0sCiAgICB7ICAzLCAyMCwgMTZ9LCB7ICAzLCAyMCwgMTd9LCB7ICAzLCAyMCwgMTl9LCB7ICAzLCAyMCwgMjF9LAogICAgeyAgMywgMjAsIDIzfSwgeyAgMywgMjAsIDI0fSwgeyAgMywgMjEsICAxfSwgeyAgMywgMjEsICA5fSwKICAgIHsgIDMsIDIxLCAyMn0sIHsgIDMsIDIxLCAyM30sIHsgIDMsIDIyLCAgMX0sIHsgIDMsIDIyLCAgMn0sCiAgICB7ICAzLCAyMiwgIDV9LCB7ICAzLCAyMiwgIDl9LCB7ICAzLCAyMiwgMTd9LCB7ICAzLCAyMiwgMTl9LAogICAgeyAgMywgMjIsIDIyfSwgeyAgMywgMjMsICAxfSwgeyAgMywgMjMsICA1fSwgeyAgMywgMjMsICA5fSwKICAgIHsgIDMsIDIzLCAxN30sIHsgIDMsIDIzLCAxOX0sIHsgIDMsIDI2LCAgMX0sIHsgIDMsIDI3LCAgMX0sCiAgICB7ICAzLCAyNywgIDJ9LCB7ICAzLCAyNywgIDV9LCB7ICAzLCAyNywgIDd9LCB7ICAzLCAyNywgIDl9LAogICAgeyAgMywgMjcsIDExfSwgeyAgMywgMjcsIDE2fSwgeyAgMywgMjcsIDE3fSwgeyAgMywgMjcsIDE5fSwKICAgIHsgIDMsIDI3LCAyMX0sIHsgIDMsIDI3LCAyM30sIHsgIDMsIDI3LCAyN30sIHsgIDMsIDI5LCAgMX0sCiAgICB7ICAzLCAyOSwgIDJ9LCB7ICAzLCAyOSwgIDV9LCB7ICAzLCAyOSwgIDl9LCB7ICAzLCAyOSwgMTd9LAogICAgeyAgMywgMjksIDE5fSwgeyAgMywgMjksIDIxfSwgeyAgMywgMjksIDIzfSwgeyAgNCwgIDMsICAxfSwKICAgIHsgIDQsICAzLCAgMn0sIHsgIDQsICAzLCAgM30sIHsgIDQsICAzLCAgNX0sIHsgIDQsICAzLCAgOH0sCiAgICB7ICA0LCAgMywgIDl9LCB7ICA0LCAgMywgMTB9LCB7ICA0LCAgMywgMTF9LCB7ICA0LCAgMywgMTd9LAogICAgeyAgNCwgIDMsIDE5fSwgeyAgNCwgIDMsIDIxfSwgeyAgNCwgIDMsIDIyfSwgeyAgNCwgIDMsIDIzfSwKICAgIHsgIDQsICAzLCAyNH0sIHsgIDQsICAzLCAyNX0sIHsgIDQsICAzLCAyN30sIHsgIDQsICAzLCAyOX0sCiAgICB7ICA0LCAgNCwgIDF9LCB7ICA0LCAgNCwgIDJ9LCB7ICA0LCAgNCwgIDV9LCB7ICA0LCAgNCwgIDl9LAogICAgeyAgNCwgIDQsIDE3fSwgeyAgNCwgIDQsIDE5fSwgeyAgNCwgIDQsIDIxfSwgeyAgNCwgIDQsIDIyfSwKICAgIHsgIDQsICA0LCAyM30sIHsgIDQsICA1LCAgMX0sIHsgIDQsICA1LCAgMn0sIHsgIDQsICA1LCAgNX0sCiAgICB7ICA0LCAgNSwgIDl9LCB7ICA0LCAgNSwgMTd9LCB7ICA0LCAgNSwgMjN9LCB7ICA0LCAgNywgIDF9LAogICAgeyAgNCwgIDcsICAyfSwgeyAgNCwgIDcsICA0fSwgeyAgNCwgIDcsICA1fSwgeyAgNCwgIDcsICA5fSwKICAgIHsgIDQsICA3LCAxMX0sIHsgIDQsICA3LCAxMn0sIHsgIDQsICA3LCAxN30sIHsgIDQsICA3LCAxOX0sCiAgICB7ICA0LCAgNywgMjF9LCB7ICA0LCAgNywgMjJ9LCB7ICA0LCAgNywgMjN9LCB7ICA0LCAgNywgMjl9LAogICAgeyAgNCwgMTAsICAxfSwgeyAgNCwgMTAsICAyfSwgeyAgNCwgMTAsICA1fSwgeyAgNCwgMTAsICA5fSwKICAgIHsgIDQsIDEwLCAxN30sIHsgIDQsIDEwLCAxOX0sIHsgIDQsIDEwLCAyMX0sIHsgIDQsIDEwLCAyMn0sCiAgICB7ICA0LCAxMCwgMjN9LCB7ICA0LCAxMSwgIDF9LCB7ICA0LCAxMSwgIDJ9LCB7ICA0LCAxMSwgIDV9LAogICAgeyAgNCwgMTEsICA5fSwgeyAgNCwgMTEsIDE3fSwgeyAgNCwgMTEsIDE5fSwgeyAgNCwgMTEsIDIyfSwKICAgIHsgIDQsIDExLCAyM30sIHsgIDQsIDExLCAyNn0sIHsgIDQsIDEyLCAgMX0sIHsgIDQsIDEyLCAgNX0sCiAgICB7ICA0LCAxMywgIDF9LCB7ICA0LCAxMywgIDJ9LCB7ICA0LCAxMywgIDV9LCB7ICA0LCAxMywgIDl9LAogICAgeyAgNCwgMTMsIDExfSwgeyAgNCwgMTMsIDE3fSwgeyAgNCwgMTMsIDE5fSwgeyAgNCwgMTMsIDIxfSwKICAgIHsgIDQsIDEzLCAyM30sIHsgIDQsIDEzLCAyOH0sIHsgIDQsIDEzLCAyOX0sIHsgIDQsIDE0LCAgMX0sCiAgICB7ICA0LCAxNCwgIDV9LCB7ICA0LCAxNCwgIDl9LCB7ICA0LCAxNCwgMjJ9LCB7ICA0LCAxOCwgIDF9LAogICAgeyAgNCwgMTgsICA1fSwgeyAgNCwgMTgsICA5fSwgeyAgNCwgMTgsIDE3fSwgeyAgNCwgMTgsIDE5fSwKICAgIHsgIDQsIDE4LCAyMX0sIHsgIDQsIDE5LCAgMX0sIHsgIDQsIDE5LCAgMn0sIHsgIDQsIDE5LCAgNX0sCiAgICB7ICA0LCAxOSwgIDl9LCB7ICA0LCAxOSwgMTl9LCB7ICA0LCAxOSwgMjF9LCB7ICA0LCAxOSwgMjN9LAogICAgeyAgNCwgMjAsICAxfSwgeyAgNCwgMjAsICAyfSwgeyAgNCwgMjAsICA1fSwgeyAgNCwgMjAsICA4fSwKICAgIHsgIDQsIDIwLCAgOX0sIHsgIDQsIDIwLCAxN30sIHsgIDQsIDIwLCAxOX0sIHsgIDQsIDIwLCAyMX0sCiAgICB7ICA0LCAyMCwgMjN9LCB7ICA0LCAyMSwgIDF9LCB7ICA0LCAyMSwgMjJ9LCB7ICA0LCAyMiwgIDF9LAogICAgeyAgNCwgMjMsICAxfSwgeyAgNCwgMjMsICA1fSwgeyAgNCwgMjMsICA5fSwgeyAgNCwgMjMsIDE3fSwKICAgIHsgIDQsIDIzLCAxOX0sIHsgIDQsIDI2LCAgMX0sIHsgIDQsIDI2LCAgMn0sIHsgIDQsIDI2LCAgOX0sCiAgICB7ICA0LCAyNiwgMTd9LCB7ICA0LCAyNiwgMTl9LCB7ICA0LCAyNiwgMjN9LCB7ICA0LCAyNywgIDF9LAogICAgeyAgNCwgMjcsICAyfSwgeyAgNCwgMjcsICA1fSwgeyAgNCwgMjcsICA5fSwgeyAgNCwgMjcsIDEwfSwKICAgIHsgIDQsIDI3LCAxMX0sIHsgIDQsIDI3LCAxN30sIHsgIDQsIDI3LCAxOX0sIHsgIDQsIDI3LCAyMX0sCiAgICB7ICA0LCAyNywgMjN9LCB7ICA0LCAyNywgMjR9LCB7ICA0LCAyNywgMjh9LCB7ICA0LCAyOCwgIDF9LAogICAgeyAgNCwgMjgsICA1fSwgeyAgNCwgMjgsICA5fSwgeyAgNCwgMjksICAxfSwgeyAgNCwgMjksICAyfSwKICAgIHsgIDQsIDI5LCAgNX0sIHsgIDQsIDI5LCAgOX0sIHsgIDQsIDI5LCAxMX0sIHsgIDQsIDI5LCAxN30sCiAgICB7ICA0LCAyOSwgMTl9LCB7ICA0LCAyOSwgMjF9LCB7ICA0LCAyOSwgMjN9LCB7ICA0LCAyOSwgMjh9LAogICAgeyAgNSwgIDMsICAxfSwgeyAgNSwgIDMsICAyfSwgeyAgNSwgIDMsICAzfSwgeyAgNSwgIDMsICA1fSwKICAgIHsgIDUsICAzLCAgOH0sIHsgIDUsICAzLCAgOX0sIHsgIDUsICAzLCAxMH0sIHsgIDUsICAzLCAxMX0sCiAgICB7ICA1LCAgMywgMTJ9LCB7ICA1LCAgMywgMTZ9LCB7ICA1LCAgMywgMTd9LCB7ICA1LCAgMywgMTl9LAogICAgeyAgNSwgIDMsIDIxfSwgeyAgNSwgIDMsIDIyfSwgeyAgNSwgIDMsIDIzfSwgeyAgNSwgIDMsIDI0fSwKICAgIHsgIDUsICAzLCAyNX0sIHsgIDUsICAzLCAyOX0sIHsgIDUsICA0LCAgMX0sIHsgIDUsICA0LCAgMn0sCiAgICB7ICA1LCAgNCwgIDV9LCB7ICA1LCAgNCwgIDl9LCB7ICA1LCAgNCwgMTd9LCB7ICA1LCAgNCwgMTl9LAogICAgeyAgNSwgIDQsIDIxfSwgeyAgNSwgIDQsIDIyfSwgeyAgNSwgIDQsIDIzfSwgeyAgNSwgIDUsICAxfSwKICAgIHsgIDUsICA3LCAgMX0sIHsgIDUsICA3LCAgMn0sIHsgIDUsICA3LCAgM30sIHsgIDUsICA3LCAgNX0sCiAgICB7ICA1LCAgNywgIDh9LCB7ICA1LCAgNywgIDl9LCB7ICA1LCAgNywgMTF9LCB7ICA1LCAgNywgMTJ9LAogICAgeyAgNSwgIDcsIDE3fSwgeyAgNSwgIDcsIDE5fSwgeyAgNSwgIDcsIDIxfSwgeyAgNSwgIDcsIDIzfSwKICAgIHsgIDUsICA3LCAyNX0sIHsgIDUsICA3LCAyOH0sIHsgIDUsIDEwLCAgMX0sIHsgIDUsIDEwLCAgMn0sCiAgICB7ICA1LCAxMCwgIDV9LCB7ICA1LCAxMCwgIDl9LCB7ICA1LCAxMCwgMTd9LCB7ICA1LCAxMCwgMTl9LAogICAgeyAgNSwgMTAsIDIxfSwgeyAgNSwgMTAsIDIyfSwgeyAgNSwgMTAsIDIzfSwgeyAgNSwgMTEsICAxfSwKICAgIHsgIDUsIDExLCAgNX0sIHsgIDUsIDExLCAgOX0sIHsgIDUsIDExLCAyMn0sIHsgIDUsIDExLCAyM30sCiAgICB7ICA1LCAxMiwgIDF9LCB7ICA1LCAxMiwgIDV9LCB7ICA1LCAxMywgIDF9LCB7ICA1LCAxMywgIDJ9LAogICAgeyAgNSwgMTMsICA1fSwgeyAgNSwgMTMsICA4fSwgeyAgNSwgMTMsICA5fSwgeyAgNSwgMTMsIDExfSwKICAgIHsgIDUsIDEzLCAxM30sIHsgIDUsIDEzLCAxN30sIHsgIDUsIDEzLCAxOX0sIHsgIDUsIDEzLCAyMX0sCiAgICB7ICA1LCAxMywgMjN9LCB7ICA1LCAxMywgMjV9LCB7ICA1LCAxMywgMjd9LCB7ICA1LCAxNCwgIDF9LAogICAgeyAgNSwgMTQsICA1fSwgeyAgNSwgMTQsICA5fSwgeyAgNSwgMTUsICAxfSwgeyAgNSwgMTUsIDIyfSwKICAgIHsgIDUsIDE4LCAgMX0sIHsgIDUsIDE4LCAgNX0sIHsgIDUsIDE4LCAgOX0sIHsgIDUsIDE4LCAxN30sCiAgICB7ICA1LCAxOCwgMTl9LCB7ICA1LCAxOCwgMjF9LCB7ICA1LCAxOSwgIDF9LCB7ICA1LCAyMCwgIDF9LAogICAgeyAgNSwgMjAsICAyfSwgeyAgNSwgMjAsICA1fSwgeyAgNSwgMjAsICA5fSwgeyAgNSwgMjAsIDE3fSwKICAgIHsgIDUsIDIwLCAxOX0sIHsgIDUsIDIwLCAyMX0sIHsgIDUsIDIwLCAyM30sIHsgIDUsIDIxLCAgMX0sCiAgICB7ICA1LCAyMSwgMjJ9LCB7ICA1LCAyMiwgIDF9LCB7ICA1LCAyMiwgMjN9LCB7ICA1LCAyMywgIDF9LAogICAgeyAgNSwgMjMsICA1fSwgeyAgNSwgMjMsICA5fSwgeyAgNSwgMjMsIDE5fSwgeyAgNSwgMjMsIDIxfSwKICAgIHsgIDUsIDIzLCAyM30sIHsgIDUsIDI2LCAgMX0sIHsgIDUsIDI2LCAgNX0sIHsgIDUsIDI2LCAgOX0sCiAgICB7ICA1LCAyNiwgMTd9LCB7ICA1LCAyNiwgMjN9LCB7ICA1LCAyNywgIDF9LCB7ICA1LCAyNywgIDJ9LAogICAgeyAgNSwgMjcsICA1fSwgeyAgNSwgMjcsICA4fSwgeyAgNSwgMjcsICA5fSwgeyAgNSwgMjcsIDExfSwKICAgIHsgIDUsIDI3LCAxN30sIHsgIDUsIDI3LCAxOX0sIHsgIDUsIDI3LCAyMX0sIHsgIDUsIDI3LCAyM30sCiAgICB7ICA1LCAyOCwgIDF9LCB7ICA1LCAyOSwgIDF9LCB7ICA1LCAyOSwgIDJ9LCB7ICA1LCAyOSwgIDV9LAogICAgeyAgNSwgMjksICA4fSwgeyAgNSwgMjksICA5fSwgeyAgNSwgMjksIDE3fSwgeyAgNSwgMjksIDE5fSwKICAgIHsgIDUsIDI5LCAyMX0sIHsgIDUsIDI5LCAyMn0sIHsgIDUsIDI5LCAyM30sIHsgIDUsIDI5LCAyNH0sCiAgICB7ICA2LCAgMywgIDF9LCB7ICA2LCAgMywgIDJ9LCB7ICA2LCAgMywgIDV9LCB7ICA2LCAgMywgIDl9LAogICAgeyAgNiwgIDMsIDE3fSwgeyAgNiwgIDMsIDE5fSwgeyAgNiwgIDMsIDIxfSwgeyAgNiwgIDMsIDIyfSwKICAgIHsgIDYsICAzLCAyM30sIHsgIDYsICAzLCAyOX0sIHsgIDYsICA0LCAgMX0sIHsgIDYsICA0LCAgMn0sCiAgICB7ICA2LCAgNCwgIDV9LCB7ICA2LCAgNCwgIDl9LCB7ICA2LCAgNCwgMTd9LCB7ICA2LCAgNCwgMTl9LAogICAgeyAgNiwgIDQsIDIxfSwgeyAgNiwgIDQsIDIyfSwgeyAgNiwgIDQsIDIzfSwgeyAgNiwgIDcsICAxfSwKICAgIHsgIDYsICA3LCAgMn0sIHsgIDYsICA3LCAgNX0sIHsgIDYsICA3LCAgOX0sIHsgIDYsICA3LCAxMX0sCiAgICB7ICA2LCAgNywgMTJ9LCB7ICA2LCAgNywgMTd9LCB7ICA2LCAgNywgMTl9LCB7ICA2LCAgNywgMjF9LAogICAgeyAgNiwgIDcsIDIyfSwgeyAgNiwgIDcsIDIzfSwgeyAgNiwgIDcsIDI5fSwgeyAgNiwgMTAsICAxfSwKICAgIHsgIDYsIDEwLCAgMn0sIHsgIDYsIDEwLCAgNX0sIHsgIDYsIDEwLCAgOX0sIHsgIDYsIDEwLCAxN30sCiAgICB7ICA2LCAxMCwgMTl9LCB7ICA2LCAxMCwgMjF9LCB7ICA2LCAxMCwgMjJ9LCB7ICA2LCAxMCwgMjN9LAogICAgeyAgNiwgMTEsICAxfSwgeyAgNiwgMTEsIDIyfSwgeyAgNiwgMTMsICAxfSwgeyAgNiwgMTMsICAyfSwKICAgIHsgIDYsIDEzLCAgNX0sIHsgIDYsIDEzLCAgOX0sIHsgIDYsIDEzLCAyM30sIHsgIDYsIDE0LCAgMX0sCiAgICB7ICA2LCAxNCwgIDl9LCB7ICA2LCAxNSwgIDF9LCB7ICA2LCAxOCwgIDF9LCB7ICA2LCAxOCwgIDV9LAogICAgeyAgNiwgMjAsICAxfSwgeyAgNiwgMjAsICAyfSwgeyAgNiwgMjAsICA1fSwgeyAgNiwgMjAsICA5fSwKICAgIHsgIDYsIDIwLCAxNn0sIHsgIDYsIDIwLCAxN30sIHsgIDYsIDIwLCAyM30sIHsgIDYsIDIyLCAgMX0sCiAgICB7ICA2LCAyMywgIDF9LCB7ICA2LCAyMywgIDV9LCB7ICA2LCAyMywgIDl9LCB7ICA2LCAyMywgMTd9LAogICAgeyAgNiwgMjMsIDE5fSwgeyAgNiwgMjMsIDIzfSwgeyAgNiwgMjcsICAxfSwgeyAgNiwgMjcsICAyfSwKICAgIHsgIDYsIDI3LCAgNX0sIHsgIDYsIDI3LCAgOH0sIHsgIDYsIDI3LCAgOX0sIHsgIDYsIDI3LCAxN30sCiAgICB7ICA2LCAyNywgMTl9LCB7ICA2LCAyNywgMjF9LCB7ICA2LCAyOCwgIDF9LCB7ICA2LCAyOCwgIDV9LAogICAgeyAgNiwgMjgsICA5fSwgeyAgNiwgMjgsIDE3fSwgeyAgNiwgMjgsIDE5fSwgeyAgNiwgMjksICAxfSwKICAgIHsgIDYsIDI5LCAgNX0sIHsgIDYsIDI5LCAgOX0sIHsgIDYsIDI5LCAxN30sIHsgIDYsIDI5LCAxOX0sCiAgICB7ICA2LCAyOSwgMjF9LCB7ICA2LCAyOSwgMjN9LCB7ICA3LCAgMywgIDF9LCB7ICA3LCAgMywgIDJ9LAogICAgeyAgNywgIDMsICA1fSwgeyAgNywgIDMsICA5fSwgeyAgNywgIDMsIDE3fSwgeyAgNywgIDMsIDE5fSwKICAgIHsgIDcsICAzLCAyMX0sIHsgIDcsICAzLCAyMn0sIHsgIDcsICAzLCAyM30sIHsgIDcsICAzLCAyNH0sCiAgICB7ICA3LCAgMywgMjh9LCB7ICA3LCAgMywgMjl9LCB7ICA3LCAgNCwgIDF9LCB7ICA3LCAgNCwgIDJ9LAogICAgeyAgNywgIDQsICA1fSwgeyAgNywgIDQsICA5fSwgeyAgNywgIDQsIDE3fSwgeyAgNywgIDQsIDE5fSwKICAgIHsgIDcsICA0LCAyMX0sIHsgIDcsICA0LCAyMn0sIHsgIDcsICA0LCAyM30sIHsgIDcsICA1LCAgMX0sCiAgICB7ICA3LCAgNSwgIDJ9LCB7ICA3LCAgNSwgIDV9LCB7ICA3LCAgNSwgMjF9LCB7ICA3LCAgNSwgMjN9LAogICAgeyAgNywgIDcsICAxfSwgeyAgNywgIDcsICAyfSwgeyAgNywgIDcsICA1fSwgeyAgNywgIDcsICA5fSwKICAgIHsgIDcsICA3LCAxN30sIHsgIDcsICA3LCAxOX0sIHsgIDcsICA3LCAyMX0sIHsgIDcsICA3LCAyMn0sCiAgICB7ICA3LCAgNywgMjN9LCB7ICA3LCAgNywgMjl9LCB7ICA3LCAxMCwgIDF9LCB7ICA3LCAxMCwgIDJ9LAogICAgeyAgNywgMTAsICA1fSwgeyAgNywgMTAsICA5fSwgeyAgNywgMTAsIDE3fSwgeyAgNywgMTAsIDE5fSwKICAgIHsgIDcsIDEwLCAyMX0sIHsgIDcsIDEwLCAyM30sIHsgIDcsIDExLCAgMX0sIHsgIDcsIDExLCAgMn0sCiAgICB7ICA3LCAxMSwgIDV9LCB7ICA3LCAxMSwgIDl9LCB7ICA3LCAxMSwgMTd9LCB7ICA3LCAxMSwgMTl9LAogICAgeyAgNywgMTEsIDIxfSwgeyAgNywgMTEsIDIyfSwgeyAgNywgMTEsIDIzfSwgeyAgNywgMTIsICAxfSwKICAgIHsgIDcsIDEyLCAgNX0sIHsgIDcsIDEyLCAxOX0sIHsgIDcsIDEyLCAyMX0sIHsgIDcsIDEzLCAgMX0sCiAgICB7ICA3LCAxMywgIDJ9LCB7ICA3LCAxMywgIDV9LCB7ICA3LCAxMywgIDl9LCB7ICA3LCAxMywgMTd9LAogICAgeyAgNywgMTMsIDE5fSwgeyAgNywgMTMsIDIxfSwgeyAgNywgMTMsIDIzfSwgeyAgNywgMTQsICAxfSwKICAgIHsgIDcsIDE0LCAgNX0sIHsgIDcsIDE0LCAyM30sIHsgIDcsIDE1LCAyMn0sIHsgIDcsIDE4LCAgMX0sCiAgICB7ICA3LCAxOCwgIDV9LCB7ICA3LCAxOCwgIDl9LCB7ICA3LCAxOCwgMTd9LCB7ICA3LCAxOCwgMTl9LAogICAgeyAgNywgMTgsIDIxfSwgeyAgNywgMTgsIDIzfSwgeyAgNywgMTksICAxfSwgeyAgNywgMTksICA1fSwKICAgIHsgIDcsIDE5LCAgOX0sIHsgIDcsIDE5LCAxOX0sIHsgIDcsIDE5LCAyMX0sIHsgIDcsIDE5LCAyM30sCiAgICB7ICA3LCAyMCwgIDF9LCB7ICA3LCAyMCwgIDJ9LCB7ICA3LCAyMCwgIDV9LCB7ICA3LCAyMCwgIDl9LAogICAgeyAgNywgMjAsIDE3fSwgeyAgNywgMjAsIDE5fSwgeyAgNywgMjAsIDIxfSwgeyAgNywgMjAsIDIzfSwKICAgIHsgIDcsIDIxLCAgMX0sIHsgIDcsIDIxLCAyMn0sIHsgIDcsIDIyLCAgMX0sIHsgIDcsIDIzLCAgMX0sCiAgICB7ICA3LCAyMywgIDJ9LCB7ICA3LCAyMywgIDV9LCB7ICA3LCAyMywgIDl9LCB7ICA3LCAyMywgMTd9LAogICAgeyAgNywgMjMsIDIxfSwgeyAgNywgMjMsIDIzfSwgeyAgNywgMjYsICAxfSwgeyAgNywgMjYsICAyfSwKICAgIHsgIDcsIDI2LCAgNX0sIHsgIDcsIDI2LCAgOX0sIHsgIDcsIDI2LCAxN30sIHsgIDcsIDI2LCAxOX0sCiAgICB7ICA3LCAyNiwgMjF9LCB7ICA3LCAyNiwgMjN9LCB7ICA3LCAyNywgIDF9LCB7ICA3LCAyNywgIDJ9LAogICAgeyAgNywgMjcsICA1fSwgeyAgNywgMjcsICA5fSwgeyAgNywgMjcsIDE3fSwgeyAgNywgMjcsIDE5fSwKICAgIHsgIDcsIDI3LCAyMX0sIHsgIDcsIDI3LCAyM30sIHsgIDcsIDI3LCAyNH0sIHsgIDcsIDI3LCAyN30sCiAgICB7ICA3LCAyNywgMjh9LCB7ICA3LCAyOSwgIDF9LCB7ICA3LCAyOSwgIDJ9LCB7ICA3LCAyOSwgIDV9LAogICAgeyAgNywgMjksICA5fSwgeyAgNywgMjksIDE3fSwgeyAgNywgMjksIDE5fSwgeyAgNywgMjksIDIxfSwKICAgIHsgIDcsIDI5LCAyM30sIHsgIDgsICAzLCAgMX0sIHsgIDgsICAzLCAgMn0sIHsgIDgsICAzLCAgNX0sCiAgICB7ICA4LCAgMywgIDd9LCB7ICA4LCAgMywgIDh9LCB7ICA4LCAgMywgIDl9LCB7ICA4LCAgMywgMTB9LAogICAgeyAgOCwgIDMsIDExfSwgeyAgOCwgIDMsIDE3fSwgeyAgOCwgIDMsIDE5fSwgeyAgOCwgIDMsIDIxfSwKICAgIHsgIDgsICAzLCAyM30sIHsgIDgsICAzLCAyNH0sIHsgIDgsICAzLCAyN30sIHsgIDgsICAzLCAyOX0sCiAgICB7ICA4LCAgNCwgIDF9LCB7ICA4LCAgNCwgIDJ9LCB7ICA4LCAgNCwgIDV9LCB7ICA4LCAgNCwgIDl9LAogICAgeyAgOCwgIDQsIDE3fSwgeyAgOCwgIDQsIDE5fSwgeyAgOCwgIDQsIDIxfSwgeyAgOCwgIDQsIDIyfSwKICAgIHsgIDgsICA0LCAyM30sIHsgIDgsICA0LCAyNH0sIHsgIDgsICA1LCAgMX0sIHsgIDgsICA1LCAgMn0sCiAgICB7ICA4LCAgNSwgIDl9LCB7ICA4LCAgNSwgMjN9LCB7ICA4LCAgNywgIDF9LCB7ICA4LCAgNywgIDJ9LAogICAgeyAgOCwgIDcsICA1fSwgeyAgOCwgIDcsICA5fSwgeyAgOCwgIDcsIDExfSwgeyAgOCwgIDcsIDE3fSwKICAgIHsgIDgsICA3LCAxOX0sIHsgIDgsICA3LCAyMX0sIHsgIDgsICA3LCAyM30sIHsgIDgsICA3LCAyNH0sCiAgICB7ICA4LCAgNywgMjl9LCB7ICA4LCAxMCwgIDF9LCB7ICA4LCAxMCwgIDJ9LCB7ICA4LCAxMCwgIDV9LAogICAgeyAgOCwgMTAsICA5fSwgeyAgOCwgMTAsIDE3fSwgeyAgOCwgMTAsIDE5fSwgeyAgOCwgMTAsIDIxfSwKICAgIHsgIDgsIDEwLCAyMn0sIHsgIDgsIDEwLCAyM30sIHsgIDgsIDExLCAgMX0sIHsgIDgsIDExLCAgMn0sCiAgICB7ICA4LCAxMSwgIDV9LCB7ICA4LCAxMSwgIDl9LCB7ICA4LCAxMSwgMjF9LCB7ICA4LCAxMSwgMjJ9LAogICAgeyAgOCwgMTEsIDIzfSwgeyAgOCwgMTEsIDI1fSwgeyAgOCwgMTIsICAxfSwgeyAgOCwgMTMsICAxfSwKICAgIHsgIDgsIDEzLCAgMn0sIHsgIDgsIDEzLCAgNH0sIHsgIDgsIDEzLCAgNX0sIHsgIDgsIDEzLCAgOX0sCiAgICB7ICA4LCAxMywgMTF9LCB7ICA4LCAxMywgMTd9LCB7ICA4LCAxMywgMTl9LCB7ICA4LCAxMywgMjF9LAogICAgeyAgOCwgMTMsIDIzfSwgeyAgOCwgMTQsICAxfSwgeyAgOCwgMTQsICA1fSwgeyAgOCwgMTQsIDIyfSwKICAgIHsgIDgsIDE0LCAyM30sIHsgIDgsIDE4LCAgMX0sIHsgIDgsIDE4LCAgNX0sIHsgIDgsIDE4LCAgOX0sCiAgICB7ICA4LCAxOCwgMTl9LCB7ICA4LCAxOCwgMjF9LCB7ICA4LCAxOCwgMjN9LCB7ICA4LCAxOSwgIDF9LAogICAgeyAgOCwgMTksICA1fSwgeyAgOCwgMTksICA5fSwgeyAgOCwgMTksIDE5fSwgeyAgOCwgMTksIDIxfSwKICAgIHsgIDgsIDIwLCAgMX0sIHsgIDgsIDIwLCAgMn0sIHsgIDgsIDIwLCAgM30sIHsgIDgsIDIwLCAgNX0sCiAgICB7ICA4LCAyMCwgIDh9LCB7ICA4LCAyMCwgIDl9LCB7ICA4LCAyMCwgMTB9LCB7ICA4LCAyMCwgMTF9LAogICAgeyAgOCwgMjAsIDE3fSwgeyAgOCwgMjAsIDE5fSwgeyAgOCwgMjAsIDIxfSwgeyAgOCwgMjAsIDIzfSwKICAgIHsgIDgsIDIwLCAyN30sIHsgIDgsIDIwLCAyOX0sIHsgIDgsIDIxLCAgMX0sIHsgIDgsIDIxLCAgNX0sCiAgICB7ICA4LCAyMSwgIDl9LCB7ICA4LCAyMSwgMTl9LCB7ICA4LCAyMSwgMjF9LCB7ICA4LCAyMiwgIDF9LAogICAgeyAgOCwgMjMsICAxfSwgeyAgOCwgMjMsICA1fSwgeyAgOCwgMjMsICA5fSwgeyAgOCwgMjYsICAxfSwKICAgIHsgIDgsIDI2LCAgNX0sIHsgIDgsIDI2LCAgOX0sIHsgIDgsIDI2LCAxN30sIHsgIDgsIDI2LCAyMX0sCiAgICB7ICA4LCAyNywgIDF9LCB7ICA4LCAyNywgIDV9LCB7ICA4LCAyNywgIDl9LCB7ICA4LCAyNywgMTd9LAogICAgeyAgOCwgMjcsIDIxfSwgeyAgOCwgMjksICAxfSwgeyAgOCwgMjksICAyfSwgeyAgOCwgMjksICA1fSwKICAgIHsgIDgsIDI5LCAgOH0sIHsgIDgsIDI5LCAgOX0sIHsgIDgsIDI5LCAxMX0sIHsgIDgsIDI5LCAxN30sCiAgICB7ICA4LCAyOSwgMTl9LCB7ICA4LCAyOSwgMjF9LCB7ICA4LCAyOSwgMjJ9LCB7ICA4LCAyOSwgMjN9LAogICAgeyAgOCwgMjksIDI1fSwgeyAgOCwgMjksIDI3fSwgeyAgOSwgIDMsICAxfSwgeyAgOSwgIDMsICAyfSwKICAgIHsgIDksICAzLCAgM30sIHsgIDksICAzLCAgNH0sIHsgIDksICAzLCAgNX0sIHsgIDksICAzLCAgOH0sCiAgICB7ICA5LCAgMywgIDl9LCB7ICA5LCAgMywgMTB9LCB7ICA5LCAgMywgMTF9LCB7ICA5LCAgMywgMTJ9LAogICAgeyAgOSwgIDMsIDE3fSwgeyAgOSwgIDMsIDE5fSwgeyAgOSwgIDMsIDIxfSwgeyAgOSwgIDMsIDIzfSwKICAgIHsgIDksICAzLCAyN30sIHsgIDksICA0LCAgMX0sIHsgIDksICA0LCAgMn0sIHsgIDksICA0LCAgNX0sCiAgICB7ICA5LCAgNCwgIDl9LCB7ICA5LCAgNCwgMTd9LCB7ICA5LCAgNCwgMTl9LCB7ICA5LCAgNCwgMjF9LAogICAgeyAgOSwgIDQsIDIyfSwgeyAgOSwgIDQsIDIzfSwgeyAgOSwgIDQsIDI3fSwgeyAgOSwgIDUsICAxfSwKICAgIHsgIDksICA1LCAgMn0sIHsgIDksICA1LCAgNX0sIHsgIDksICA1LCAxOX0sIHsgIDksICA3LCAgMX0sCiAgICB7ICA5LCAgNywgIDJ9LCB7ICA5LCAgNywgIDV9LCB7ICA5LCAgNywgIDh9LCB7ICA5LCAgNywgIDl9LAogICAgeyAgOSwgIDcsIDExfSwgeyAgOSwgIDcsIDE3fSwgeyAgOSwgIDcsIDE5fSwgeyAgOSwgIDcsIDIxfSwKICAgIHsgIDksICA3LCAyM30sIHsgIDksICA3LCAyNH0sIHsgIDksIDEwLCAgMX0sIHsgIDksIDEwLCAgMn0sCiAgICB7ICA5LCAxMCwgIDV9LCB7ICA5LCAxMCwgIDh9LCB7ICA5LCAxMCwgIDl9LCB7ICA5LCAxMCwgMTd9LAogICAgeyAgOSwgMTAsIDE5fSwgeyAgOSwgMTAsIDIxfSwgeyAgOSwgMTAsIDIyfSwgeyAgOSwgMTAsIDIzfSwKICAgIHsgIDksIDExLCAgMX0sIHsgIDksIDExLCAgMn0sIHsgIDksIDExLCAgNX0sIHsgIDksIDExLCAgOX0sCiAgICB7ICA5LCAxMSwgMTl9LCB7ICA5LCAxMSwgMjF9LCB7ICA5LCAxMSwgMjJ9LCB7ICA5LCAxMSwgMjN9LAogICAgeyAgOSwgMTEsIDI3fSwgeyAgOSwgMTIsICAxfSwgeyAgOSwgMTIsICA1fSwgeyAgOSwgMTMsICAxfSwKICAgIHsgIDksIDEzLCAgMn0sIHsgIDksIDEzLCAgM30sIHsgIDksIDEzLCAgNX0sIHsgIDksIDEzLCAgOX0sCiAgICB7ICA5LCAxMywgMTd9LCB7ICA5LCAxMywgMTl9LCB7ICA5LCAxMywgMjF9LCB7ICA5LCAxMywgMjN9LAogICAgeyAgOSwgMTQsICAxfSwgeyAgOSwgMTQsICA1fSwgeyAgOSwgMTQsIDIyfSwgeyAgOSwgMTUsICAxfSwKICAgIHsgIDksIDE1LCAyMn0sIHsgIDksIDE4LCAgMX0sIHsgIDksIDE4LCAgMn0sIHsgIDksIDE4LCAgNX0sCiAgICB7ICA5LCAxOCwgIDl9LCB7ICA5LCAxOCwgMTd9LCB7ICA5LCAxOCwgMTl9LCB7ICA5LCAxOSwgIDF9LAogICAgeyAgOSwgMTksICA1fSwgeyAgOSwgMjAsICAxfSwgeyAgOSwgMjAsICAyfSwgeyAgOSwgMjAsICA1fSwKICAgIHsgIDksIDIwLCAgOH0sIHsgIDksIDIwLCAgOX0sIHsgIDksIDIwLCAxMH0sIHsgIDksIDIwLCAxMX0sCiAgICB7ICA5LCAyMCwgMTd9LCB7ICA5LCAyMCwgMTl9LCB7ICA5LCAyMCwgMjF9LCB7ICA5LCAyMCwgMjN9LAogICAgeyAgOSwgMjAsIDI3fSwgeyAgOSwgMjAsIDI4fSwgeyAgOSwgMjEsICAxfSwgeyAgOSwgMjEsICA5fSwKICAgIHsgIDksIDIxLCAyMn0sIHsgIDksIDIyLCAgMX0sIHsgIDksIDIzLCAgMX0sIHsgIDksIDIzLCAgMn0sCiAgICB7ICA5LCAyMywgIDV9LCB7ICA5LCAyMywgIDl9LCB7ICA5LCAyMywgMjN9LCB7ICA5LCAyNiwgIDF9LAogICAgeyAgOSwgMjYsICA1fSwgeyAgOSwgMjYsICA5fSwgeyAgOSwgMjYsIDE3fSwgeyAgOSwgMjYsIDIxfSwKICAgIHsgIDksIDI2LCAyM30sIHsgIDksIDI3LCAgMX0sIHsgIDksIDI3LCAgMn0sIHsgIDksIDI3LCAgNX0sCiAgICB7ICA5LCAyNywgIDl9LCB7ICA5LCAyNywgMTd9LCB7ICA5LCAyNywgMTl9LCB7ICA5LCAyNywgMjF9LAogICAgeyAgOSwgMjksICAxfSwgeyAgOSwgMjksICAyfSwgeyAgOSwgMjksICA1fSwgeyAgOSwgMjksICA5fSwKICAgIHsgIDksIDI5LCAxMX0sIHsgIDksIDI5LCAxN30sIHsgIDksIDI5LCAxOX0sIHsgIDksIDI5LCAyMX0sCiAgICB7ICA5LCAyOSwgMjN9LCB7ICA5LCAyOSwgMjR9LCB7ICA5LCAyOSwgMjV9LCB7IDEwLCAgMywgIDF9LAogICAgeyAxMCwgIDMsICAyfSwgeyAxMCwgIDMsICA1fSwgeyAxMCwgIDMsICA5fSwgeyAxMCwgIDMsIDExfSwKICAgIHsgMTAsICAzLCAxN30sIHsgMTAsICAzLCAxOX0sIHsgMTAsICAzLCAyMX0sIHsgMTAsICAzLCAyMn0sCiAgICB7IDEwLCAgMywgMjN9LCB7IDEwLCAgMywgMjl9LCB7IDEwLCAgNCwgIDF9LCB7IDEwLCAgNCwgIDJ9LAogICAgeyAxMCwgIDQsICA1fSwgeyAxMCwgIDQsICA5fSwgeyAxMCwgIDQsIDE3fSwgeyAxMCwgIDQsIDE5fSwKICAgIHsgMTAsICA0LCAyMX0sIHsgMTAsICA0LCAyMn0sIHsgMTAsICA0LCAyM30sIHsgMTAsICA1LCAgMX0sCiAgICB7IDEwLCAgNSwgIDJ9LCB7IDEwLCAgNSwgMTd9LCB7IDEwLCAgNywgIDF9LCB7IDEwLCAgNywgIDJ9LAogICAgeyAxMCwgIDcsICA1fSwgeyAxMCwgIDcsICA4fSwgeyAxMCwgIDcsICA5fSwgeyAxMCwgIDcsIDE3fSwKICAgIHsgMTAsICA3LCAyMX0sIHsgMTAsICA3LCAyMn0sIHsgMTAsICA3LCAyM30sIHsgMTAsIDEwLCAgMX0sCiAgICB7IDEwLCAxMCwgMjN9LCB7IDEwLCAxMSwgIDF9LCB7IDEwLCAxMSwgIDJ9LCB7IDEwLCAxMSwgMTd9LAogICAgeyAxMCwgMTEsIDE5fSwgeyAxMCwgMTEsIDIxfSwgeyAxMCwgMTEsIDIyfSwgeyAxMCwgMTEsIDIzfSwKICAgIHsgMTAsIDEzLCAgMX0sIHsgMTAsIDEzLCAgMn0sIHsgMTAsIDEzLCAgNX0sIHsgMTAsIDEzLCAgOX0sCiAgICB7IDEwLCAxMywgMTd9LCB7IDEwLCAxMywgMTl9LCB7IDEwLCAxMywgMjN9LCB7IDEwLCAxOCwgIDF9LAogICAgeyAxMCwgMTksICAxfSwgeyAxMCwgMTksIDIzfSwgeyAxMCwgMjAsICAxfSwgeyAxMCwgMjAsICAyfSwKICAgIHsgMTAsIDIwLCAgNX0sIHsgMTAsIDIwLCAgOX0sIHsgMTAsIDIwLCAxN30sIHsgMTAsIDIwLCAyMX0sCiAgICB7IDEwLCAyMCwgMjN9LCB7IDEwLCAyNiwgIDF9LCB7IDEwLCAyNiwgMjN9LCB7IDEwLCAyNywgIDF9LAogICAgeyAxMCwgMjcsICA1fSwgeyAxMCwgMjcsICA5fSwgeyAxMCwgMjcsIDE3fSwgeyAxMCwgMjcsIDE5fSwKICAgIHsgMTAsIDI5LCAgMX0sIHsgMTAsIDI5LCAgMn0sIHsgMTAsIDI5LCAgNX0sIHsgMTAsIDI5LCAgOX0sCiAgICB7IDEwLCAyOSwgMTd9LCB7IDEwLCAyOSwgMTl9LCB7IDEwLCAyOSwgMjF9LCB7IDEwLCAyOSwgMjN9LAogICAgeyAxMSwgIDMsICAxfSwgeyAxMSwgIDMsICAyfSwgeyAxMSwgIDMsICA0fSwgeyAxMSwgIDMsICA1fSwKICAgIHsgMTEsICAzLCAgOH0sIHsgMTEsICAzLCAgOX0sIHsgMTEsICAzLCAxMH0sIHsgMTEsICAzLCAxMX0sCiAgICB7IDExLCAgMywgMTd9LCB7IDExLCAgMywgMTl9LCB7IDExLCAgMywgMjF9LCB7IDExLCAgMywgMjJ9LAogICAgeyAxMSwgIDMsIDIzfSwgeyAxMSwgIDMsIDI3fSwgeyAxMSwgIDQsICAxfSwgeyAxMSwgIDQsICAyfSwKICAgIHsgMTEsICA0LCAgNX0sIHsgMTEsICA0LCAgOX0sIHsgMTEsICA0LCAxN30sIHsgMTEsICA0LCAxOX0sCiAgICB7IDExLCAgNCwgMjF9LCB7IDExLCAgNCwgMjJ9LCB7IDExLCAgNCwgMjN9LCB7IDExLCAgNSwgIDF9LAogICAgeyAxMSwgIDUsICAyfSwgeyAxMSwgIDUsICA1fSwgeyAxMSwgIDUsICA5fSwgeyAxMSwgIDUsIDE3fSwKICAgIHsgMTEsICA1LCAxOX0sIHsgMTEsICA1LCAyMX0sIHsgMTEsICA1LCAyM30sIHsgMTEsICA2LCAgMX0sCiAgICB7IDExLCAgNiwgIDV9LCB7IDExLCAgNiwgIDl9LCB7IDExLCAgNiwgMTd9LCB7IDExLCAgNiwgMjN9LAogICAgeyAxMSwgIDcsICAxfSwgeyAxMSwgIDcsICAyfSwgeyAxMSwgIDcsICAzfSwgeyAxMSwgIDcsICA0fSwKICAgIHsgMTEsICA3LCAgNX0sIHsgMTEsICA3LCAgOH0sIHsgMTEsICA3LCAgOX0sIHsgMTEsICA3LCAxMX0sCiAgICB7IDExLCAgNywgMTJ9LCB7IDExLCAgNywgMTd9LCB7IDExLCAgNywgMTl9LCB7IDExLCAgNywgMjF9LAogICAgeyAxMSwgIDcsIDIyfSwgeyAxMSwgIDcsIDIzfSwgeyAxMSwgIDcsIDI4fSwgeyAxMSwgMTAsICAxfSwKICAgIHsgMTEsIDEwLCAgMn0sIHsgMTEsIDEwLCAgNX0sIHsgMTEsIDEwLCAgOX0sIHsgMTEsIDEwLCAxN30sCiAgICB7IDExLCAxMCwgMTl9LCB7IDExLCAxMCwgMjF9LCB7IDExLCAxMCwgMjJ9LCB7IDExLCAxMCwgMjN9LAogICAgeyAxMSwgMTEsICAxfSwgeyAxMSwgMTEsICAyfSwgeyAxMSwgMTEsICA1fSwgeyAxMSwgMTEsICA5fSwKICAgIHsgMTEsIDExLCAxN30sIHsgMTEsIDExLCAxOX0sIHsgMTEsIDExLCAyMX0sIHsgMTEsIDExLCAyMn0sCiAgICB7IDExLCAxMSwgMjN9LCB7IDExLCAxMiwgIDF9LCB7IDExLCAxMiwgIDV9LCB7IDExLCAxMiwgIDl9LAogICAgeyAxMSwgMTIsIDIzfSwgeyAxMSwgMTMsICAxfSwgeyAxMSwgMTMsICAyfSwgeyAxMSwgMTMsICAzfSwKICAgIHsgMTEsIDEzLCAgNX0sIHsgMTEsIDEzLCAgOX0sIHsgMTEsIDEzLCAxMX0sIHsgMTEsIDEzLCAxN30sCiAgICB7IDExLCAxMywgMTl9LCB7IDExLCAxMywgMjF9LCB7IDExLCAxMywgMjN9LCB7IDExLCAxMywgMjd9LAogICAgeyAxMSwgMTQsICAxfSwgeyAxMSwgMTQsICAyfSwgeyAxMSwgMTQsICA1fSwgeyAxMSwgMTQsICA5fSwKICAgIHsgMTEsIDE0LCAyM30sIHsgMTEsIDE1LCAgMX0sIHsgMTEsIDE1LCAgNX0sIHsgMTEsIDE1LCAgOX0sCiAgICB7IDExLCAxNSwgMTd9LCB7IDExLCAxNSwgMjF9LCB7IDExLCAxNSwgMjJ9LCB7IDExLCAxOCwgIDF9LAogICAgeyAxMSwgMTgsICA1fSwgeyAxMSwgMTgsICA5fSwgeyAxMSwgMTgsIDE3fSwgeyAxMSwgMTgsIDE5fSwKICAgIHsgMTEsIDE4LCAyMX0sIHsgMTEsIDE5LCAgMX0sIHsgMTEsIDE5LCAgMn0sIHsgMTEsIDE5LCAgNX0sCiAgICB7IDExLCAxOSwgIDl9LCB7IDExLCAxOSwgMTd9LCB7IDExLCAxOSwgMTl9LCB7IDExLCAxOSwgMjF9LAogICAgeyAxMSwgMTksIDIzfSwgeyAxMSwgMjAsICAxfSwgeyAxMSwgMjAsICAyfSwgeyAxMSwgMjAsICA1fSwKICAgIHsgMTEsIDIwLCAgOH0sIHsgMTEsIDIwLCAgOX0sIHsgMTEsIDIwLCAxN30sIHsgMTEsIDIwLCAxOX0sCiAgICB7IDExLCAyMCwgMjF9LCB7IDExLCAyMCwgMjN9LCB7IDExLCAyMCwgMjV9LCB7IDExLCAyMCwgMjd9LAogICAgeyAxMSwgMjAsIDI4fSwgeyAxMSwgMjEsICAxfSwgeyAxMSwgMjEsIDIyfSwgeyAxMSwgMjIsICAxfSwKICAgIHsgMTEsIDIyLCAgMn0sIHsgMTEsIDIyLCAgNX0sIHsgMTEsIDIyLCAgOX0sIHsgMTEsIDIyLCAxN30sCiAgICB7IDExLCAyMiwgMjN9LCB7IDExLCAyMywgIDF9LCB7IDExLCAyMywgIDJ9LCB7IDExLCAyMywgIDV9LAogICAgeyAxMSwgMjMsICA5fSwgeyAxMSwgMjMsIDE3fSwgeyAxMSwgMjMsIDE5fSwgeyAxMSwgMjMsIDIxfSwKICAgIHsgMTEsIDIzLCAyM30sIHsgMTEsIDI2LCAgMX0sIHsgMTEsIDI2LCAgMn0sIHsgMTEsIDI2LCAgOX0sCiAgICB7IDExLCAyNiwgMTd9LCB7IDExLCAyNiwgMjF9LCB7IDExLCAyNiwgMjN9LCB7IDExLCAyNywgIDF9LAogICAgeyAxMSwgMjcsICAyfSwgeyAxMSwgMjcsICA1fSwgeyAxMSwgMjcsICA5fSwgeyAxMSwgMjcsIDEwfSwKICAgIHsgMTEsIDI3LCAxN30sIHsgMTEsIDI3LCAxOX0sIHsgMTEsIDI3LCAyMX0sIHsgMTEsIDI3LCAyM30sCiAgICB7IDExLCAyOSwgIDF9LCB7IDExLCAyOSwgIDJ9LCB7IDExLCAyOSwgIDV9LCB7IDExLCAyOSwgIDh9LAogICAgeyAxMSwgMjksICA5fSwgeyAxMSwgMjksIDE2fSwgeyAxMSwgMjksIDE3fSwgeyAxMSwgMjksIDE5fSwKICAgIHsgMTEsIDI5LCAyMX0sIHsgMTEsIDI5LCAyM30sIHsgMTEsIDI5LCAyOH0sIHsgMTIsICAzLCAgMX0sCiAgICB7IDEyLCAgMywgIDJ9LCB7IDEyLCAgMywgIDR9LCB7IDEyLCAgMywgIDV9LCB7IDEyLCAgMywgIDl9LAogICAgeyAxMiwgIDMsIDE3fSwgeyAxMiwgIDMsIDE5fSwgeyAxMiwgIDMsIDIyfSwgeyAxMiwgIDMsIDIzfSwKICAgIHsgMTIsICAzLCAyOX0sIHsgMTIsICA0LCAgMX0sIHsgMTIsICA0LCAgMn0sIHsgMTIsICA0LCAgNX0sCiAgICB7IDEyLCAgNCwgIDl9LCB7IDEyLCAgNCwgMTd9LCB7IDEyLCAgNCwgMTl9LCB7IDEyLCAgNCwgMjJ9LAogICAgeyAxMiwgIDQsIDIzfSwgeyAxMiwgIDUsIDIzfSwgeyAxMiwgIDcsICAxfSwgeyAxMiwgIDcsICAyfSwKICAgIHsgMTIsICA3LCAgNX0sIHsgMTIsICA3LCAgOX0sIHsgMTIsICA3LCAxMX0sIHsgMTIsICA3LCAxN30sCiAgICB7IDEyLCAgNywgMTl9LCB7IDEyLCAgNywgMjJ9LCB7IDEyLCAgNywgMjN9LCB7IDEyLCAxMCwgIDF9LAogICAgeyAxMiwgMTAsICA1fSwgeyAxMiwgMTAsICA5fSwgeyAxMiwgMTIsICA1fSwgeyAxMiwgMTMsICAxfSwKICAgIHsgMTIsIDEzLCAgMn0sIHsgMTIsIDEzLCAgNX0sIHsgMTIsIDEzLCAgOH0sIHsgMTIsIDEzLCAgOX0sCiAgICB7IDEyLCAxMywgMTF9LCB7IDEyLCAxMywgMTd9LCB7IDEyLCAxMywgMTl9LCB7IDEyLCAxMywgMjN9LAogICAgeyAxMiwgMTQsICAxfSwgeyAxMiwgMTQsICAyfSwgeyAxMiwgMTQsICA1fSwgeyAxMiwgMTQsIDIyfSwKICAgIHsgMTIsIDE1LCAgMX0sIHsgMTIsIDE1LCAyMn0sIHsgMTIsIDE4LCAgMX0sIHsgMTIsIDE4LCAgNX0sCiAgICB7IDEyLCAxOCwgIDl9LCB7IDEyLCAxOCwgMTd9LCB7IDEyLCAxOCwgMTl9LCB7IDEyLCAxOSwgIDF9LAogICAgeyAxMiwgMjAsICAxfSwgeyAxMiwgMjAsICAyfSwgeyAxMiwgMjAsICA1fSwgeyAxMiwgMjAsICA5fSwKICAgIHsgMTIsIDIwLCAxN30sIHsgMTIsIDIwLCAxOX0sIHsgMTIsIDIwLCAyM30sIHsgMTIsIDIxLCAgMX0sCiAgICB7IDEyLCAyMSwgMjJ9LCB7IDEyLCAyMiwgIDF9LCB7IDEyLCAyMywgIDF9LCB7IDEyLCAyMywgIDV9LAogICAgeyAxMiwgMjYsIDIzfSwgeyAxMiwgMjcsICAxfSwgeyAxMiwgMjcsICAyfSwgeyAxMiwgMjcsICA1fSwKICAgIHsgMTIsIDI3LCAgOX0sIHsgMTIsIDI3LCAxMX0sIHsgMTIsIDI3LCAxNn0sIHsgMTIsIDI3LCAxN30sCiAgICB7IDEyLCAyNywgMTl9LCB7IDEyLCAyOCwgIDF9LCB7IDEyLCAyOCwgIDV9LCB7IDEyLCAyOCwgIDl9LAogICAgeyAxMiwgMjgsIDE3fSwgeyAxMiwgMjksICAxfSwgeyAxMiwgMjksICAyfSwgeyAxMiwgMjksICA1fSwKICAgIHsgMTIsIDI5LCAgOX0sIHsgMTIsIDI5LCAxN30sIHsgMTIsIDI5LCAxOX0sIHsgMTIsIDI5LCAyMX0sCiAgICB7IDEyLCAyOSwgMjN9LCB7IDEzLCAgMywgIDF9LCB7IDEzLCAgMywgIDJ9LCB7IDEzLCAgMywgIDV9LAogICAgeyAxMywgIDMsICA2fSwgeyAxMywgIDMsICA3fSwgeyAxMywgIDMsICA5fSwgeyAxMywgIDMsIDEwfSwKICAgIHsgMTMsICAzLCAxMX0sIHsgMTMsICAzLCAxNn0sIHsgMTMsICAzLCAxN30sIHsgMTMsICAzLCAxOX0sCiAgICB7IDEzLCAgMywgMjF9LCB7IDEzLCAgMywgMjJ9LCB7IDEzLCAgMywgMjN9LCB7IDEzLCAgMywgMjd9LAogICAgeyAxMywgIDMsIDI4fSwgeyAxMywgIDQsICAxfSwgeyAxMywgIDQsICAyfSwgeyAxMywgIDQsICA1fSwKICAgIHsgMTMsICA0LCAgOX0sIHsgMTMsICA0LCAxN30sIHsgMTMsICA0LCAxOX0sIHsgMTMsICA0LCAyMX0sCiAgICB7IDEzLCAgNCwgMjJ9LCB7IDEzLCAgNCwgMjN9LCB7IDEzLCAgNSwgIDF9LCB7IDEzLCAgNSwgIDJ9LAogICAgeyAxMywgIDUsICA1fSwgeyAxMywgIDUsICA5fSwgeyAxMywgIDUsIDEyfSwgeyAxMywgIDUsIDE3fSwKICAgIHsgMTMsICA1LCAxOX0sIHsgMTMsICA1LCAyMX0sIHsgMTMsICA1LCAyM30sIHsgMTMsICA1LCAyN30sCiAgICB7IDEzLCAgNSwgMjl9LCB7IDEzLCAgNiwgIDF9LCB7IDEzLCAgNiwgIDV9LCB7IDEzLCAgNiwgIDl9LAogICAgeyAxMywgIDYsIDE5fSwgeyAxMywgIDcsICAxfSwgeyAxMywgIDcsICAyfSwgeyAxMywgIDcsICA1fSwKICAgIHsgMTMsICA3LCAgNn0sIHsgMTMsICA3LCAgOH0sIHsgMTMsICA3LCAgOX0sIHsgMTMsICA3LCAxMH0sCiAgICB7IDEzLCAgNywgMTF9LCB7IDEzLCAgNywgMTd9LCB7IDEzLCAgNywgMTl9LCB7IDEzLCAgNywgMjB9LAogICAgeyAxMywgIDcsIDIxfSwgeyAxMywgIDcsIDIyfSwgeyAxMywgIDcsIDIzfSwgeyAxMywgIDcsIDI0fSwKICAgIHsgMTMsICA3LCAyNn0sIHsgMTMsICA3LCAyOH0sIHsgMTMsIDEwLCAgMX0sIHsgMTMsIDEwLCAgMn0sCiAgICB7IDEzLCAxMCwgIDV9LCB7IDEzLCAxMCwgIDl9LCB7IDEzLCAxMCwgMTd9LCB7IDEzLCAxMCwgMTl9LAogICAgeyAxMywgMTAsIDIxfSwgeyAxMywgMTAsIDIzfSwgeyAxMywgMTEsICAxfSwgeyAxMywgMTEsICAyfSwKICAgIHsgMTMsIDExLCAgM30sIHsgMTMsIDExLCAgNX0sIHsgMTMsIDExLCAgOX0sIHsgMTMsIDExLCAxMX0sCiAgICB7IDEzLCAxMSwgMTJ9LCB7IDEzLCAxMSwgMTd9LCB7IDEzLCAxMSwgMTl9LCB7IDEzLCAxMSwgMjB9LAogICAgeyAxMywgMTEsIDIxfSwgeyAxMywgMTEsIDIyfSwgeyAxMywgMTEsIDIzfSwgeyAxMywgMTEsIDI3fSwKICAgIHsgMTMsIDExLCAyOH0sIHsgMTMsIDExLCAyOX0sIHsgMTMsIDEyLCAgMX0sIHsgMTMsIDEyLCAgNX0sCiAgICB7IDEzLCAxMiwgIDl9LCB7IDEzLCAxMiwgMTd9LCB7IDEzLCAxMiwgMTl9LCB7IDEzLCAxMiwgMjF9LAogICAgeyAxMywgMTIsIDIyfSwgeyAxMywgMTMsICAxfSwgeyAxMywgMTMsICAyfSwgeyAxMywgMTMsICA1fSwKICAgIHsgMTMsIDEzLCAgOX0sIHsgMTMsIDEzLCAxMH0sIHsgMTMsIDEzLCAxMX0sIHsgMTMsIDEzLCAxM30sCiAgICB7IDEzLCAxMywgMTZ9LCB7IDEzLCAxMywgMTd9LCB7IDEzLCAxMywgMTl9LCB7IDEzLCAxMywgMjF9LAogICAgeyAxMywgMTMsIDIzfSwgeyAxMywgMTMsIDI1fSwgeyAxMywgMTQsICAxfSwgeyAxMywgMTQsICAyfSwKICAgIHsgMTMsIDE0LCAgNX0sIHsgMTMsIDE0LCAgOX0sIHsgMTMsIDE0LCAxN30sIHsgMTMsIDE0LCAxOX0sCiAgICB7IDEzLCAxNCwgMjF9LCB7IDEzLCAxNCwgMjJ9LCB7IDEzLCAxNCwgMjN9LCB7IDEzLCAxNSwgIDF9LAogICAgeyAxMywgMTUsICAyfSwgeyAxMywgMTUsICA1fSwgeyAxMywgMTUsIDE3fSwgeyAxMywgMTUsIDIxfSwKICAgIHsgMTMsIDE1LCAyM30sIHsgMTMsIDE4LCAgMX0sIHsgMTMsIDE4LCAgMn0sIHsgMTMsIDE4LCAgNX0sCiAgICB7IDEzLCAxOCwgIDl9LCB7IDEzLCAxOCwgMTd9LCB7IDEzLCAxOCwgMTl9LCB7IDEzLCAxOCwgMjF9LAogICAgeyAxMywgMTgsIDIzfSwgeyAxMywgMTksICAxfSwgeyAxMywgMTksICAyfSwgeyAxMywgMTksICA1fSwKICAgIHsgMTMsIDE5LCAgOX0sIHsgMTMsIDE5LCAxN30sIHsgMTMsIDE5LCAxOX0sIHsgMTMsIDE5LCAyMX0sCiAgICB7IDEzLCAxOSwgMjN9LCB7IDEzLCAyMCwgIDF9LCB7IDEzLCAyMCwgIDJ9LCB7IDEzLCAyMCwgIDV9LAogICAgeyAxMywgMjAsICA5fSwgeyAxMywgMjAsIDEwfSwgeyAxMywgMjAsIDExfSwgeyAxMywgMjAsIDE3fSwKICAgIHsgMTMsIDIwLCAxOX0sIHsgMTMsIDIwLCAyMX0sIHsgMTMsIDIwLCAyM30sIHsgMTMsIDIxLCAgMX0sCiAgICB7IDEzLCAyMSwgIDJ9LCB7IDEzLCAyMSwgIDV9LCB7IDEzLCAyMSwgIDl9LCB7IDEzLCAyMSwgMTd9LAogICAgeyAxMywgMjEsIDE5fSwgeyAxMywgMjEsIDIyfSwgeyAxMywgMjEsIDIzfSwgeyAxMywgMjIsICAxfSwKICAgIHsgMTMsIDIyLCAgMn0sIHsgMTMsIDIyLCAgNX0sIHsgMTMsIDIyLCAgOX0sIHsgMTMsIDIyLCAxN30sCiAgICB7IDEzLCAyMiwgMTl9LCB7IDEzLCAyMiwgMjN9LCB7IDEzLCAyMywgIDF9LCB7IDEzLCAyMywgIDJ9LAogICAgeyAxMywgMjMsICA1fSwgeyAxMywgMjMsICA5fSwgeyAxMywgMjMsIDE3fSwgeyAxMywgMjMsIDE5fSwKICAgIHsgMTMsIDIzLCAyMX0sIHsgMTMsIDIzLCAyM30sIHsgMTMsIDI2LCAgMX0sIHsgMTMsIDI2LCAgMn0sCiAgICB7IDEzLCAyNiwgIDV9LCB7IDEzLCAyNiwgIDl9LCB7IDEzLCAyNiwgMTd9LCB7IDEzLCAyNiwgMTl9LAogICAgeyAxMywgMjYsIDIxfSwgeyAxMywgMjYsIDIzfSwgeyAxMywgMjYsIDI1fSwgeyAxMywgMjcsICAxfSwKICAgIHsgMTMsIDI3LCAgMn0sIHsgMTMsIDI3LCAgNX0sIHsgMTMsIDI3LCAgOX0sIHsgMTMsIDI3LCAxNX0sCiAgICB7IDEzLCAyNywgMTd9LCB7IDEzLCAyNywgMTl9LCB7IDEzLCAyNywgMjF9LCB7IDEzLCAyNywgMjN9LAogICAgeyAxMywgMjcsIDI0fSwgeyAxMywgMjcsIDI1fSwgeyAxMywgMjcsIDI2fSwgeyAxMywgMjcsIDI3fSwKICAgIHsgMTMsIDI3LCAyOH0sIHsgMTMsIDI3LCAyOX0sIHsgMTMsIDI4LCAgMX0sIHsgMTMsIDI4LCAgNX0sCiAgICB7IDEzLCAyOCwgIDl9LCB7IDEzLCAyOCwgMTd9LCB7IDEzLCAyOCwgMjF9LCB7IDEzLCAyOSwgIDF9LAogICAgeyAxMywgMjksICAyfSwgeyAxMywgMjksICA1fSwgeyAxMywgMjksICA5fSwgeyAxMywgMjksIDEwfSwKICAgIHsgMTMsIDI5LCAxMX0sIHsgMTMsIDI5LCAxNn0sIHsgMTMsIDI5LCAxN30sIHsgMTMsIDI5LCAxOX0sCiAgICB7IDEzLCAyOSwgMjF9LCB7IDEzLCAyOSwgMjJ9LCB7IDEzLCAyOSwgMjN9LCB7IDEzLCAyOSwgMjR9LAogICAgeyAxMywgMjksIDI4fSwgeyAxNCwgIDMsICAxfSwgeyAxNCwgIDMsICAyfSwgeyAxNCwgIDMsICA1fSwKICAgIHsgMTQsICAzLCAgN30sIHsgMTQsICAzLCAgOH0sIHsgMTQsICAzLCAgOX0sIHsgMTQsICAzLCAxMX0sCiAgICB7IDE0LCAgMywgMTd9LCB7IDE0LCAgMywgMTl9LCB7IDE0LCAgMywgMjF9LCB7IDE0LCAgMywgMjJ9LAogICAgeyAxNCwgIDMsIDIzfSwgeyAxNCwgIDMsIDI0fSwgeyAxNCwgIDQsICAxfSwgeyAxNCwgIDQsICAyfSwKICAgIHsgMTQsICA0LCAgNX0sIHsgMTQsICA0LCAgOX0sIHsgMTQsICA0LCAxN30sIHsgMTQsICA0LCAxOX0sCiAgICB7IDE0LCAgNCwgMjF9LCB7IDE0LCAgNCwgMjJ9LCB7IDE0LCAgNCwgMjN9LCB7IDE0LCAgNSwgIDF9LAogICAgeyAxNCwgIDUsICAyfSwgeyAxNCwgIDUsICA1fSwgeyAxNCwgIDUsICA3fSwgeyAxNCwgIDUsICA5fSwKICAgIHsgMTQsICA1LCAxN30sIHsgMTQsICA1LCAyM30sIHsgMTQsICA2LCAgMX0sIHsgMTQsICA2LCAgNX0sCiAgICB7IDE0LCAgNiwgIDl9LCB7IDE0LCAgNywgIDF9LCB7IDE0LCAgNywgIDJ9LCB7IDE0LCAgNywgIDV9LAogICAgeyAxNCwgIDcsICA5fSwgeyAxNCwgIDcsIDExfSwgeyAxNCwgIDcsIDE3fSwgeyAxNCwgIDcsIDE5fSwKICAgIHsgMTQsICA3LCAyMX0sIHsgMTQsICA3LCAyM30sIHsgMTQsICA3LCAyNH0sIHsgMTQsIDEwLCAgMX0sCiAgICB7IDE0LCAxMCwgIDJ9LCB7IDE0LCAxMCwgIDV9LCB7IDE0LCAxMCwgIDl9LCB7IDE0LCAxMCwgMTd9LAogICAgeyAxNCwgMTAsIDE5fSwgeyAxNCwgMTAsIDIxfSwgeyAxNCwgMTAsIDIzfSwgeyAxNCwgMTEsICAxfSwKICAgIHsgMTQsIDExLCAgNX0sIHsgMTQsIDExLCAgOX0sIHsgMTQsIDExLCAxN30sIHsgMTQsIDExLCAxOX0sCiAgICB7IDE0LCAxMSwgMjJ9LCB7IDE0LCAxMSwgMjN9LCB7IDE0LCAxMiwgIDF9LCB7IDE0LCAxMywgIDF9LAogICAgeyAxNCwgMTMsICAyfSwgeyAxNCwgMTMsICA1fSwgeyAxNCwgMTMsICA5fSwgeyAxNCwgMTMsIDExfSwKICAgIHsgMTQsIDEzLCAxN30sIHsgMTQsIDEzLCAxOX0sIHsgMTQsIDEzLCAyMX0sIHsgMTQsIDEzLCAyM30sCiAgICB7IDE0LCAxMywgMjR9LCB7IDE0LCAxMywgMjV9LCB7IDE0LCAxMywgMjl9LCB7IDE0LCAxNCwgIDF9LAogICAgeyAxNCwgMTQsICAyfSwgeyAxNCwgMTQsICA5fSwgeyAxNCwgMTQsIDE5fSwgeyAxNCwgMTQsIDIxfSwKICAgIHsgMTQsIDE0LCAyM30sIHsgMTQsIDE1LCAgMX0sIHsgMTQsIDE1LCAyMn0sIHsgMTQsIDE1LCAyM30sCiAgICB7IDE0LCAxOCwgIDF9LCB7IDE0LCAxOCwgIDV9LCB7IDE0LCAxOCwgIDl9LCB7IDE0LCAxOCwgMTd9LAogICAgeyAxNCwgMTgsIDE5fSwgeyAxNCwgMTgsIDIxfSwgeyAxNCwgMTgsIDIzfSwgeyAxNCwgMTksICAxfSwKICAgIHsgMTQsIDE5LCAgMn0sIHsgMTQsIDE5LCAgNX0sIHsgMTQsIDE5LCAyM30sIHsgMTQsIDIwLCAgMX0sCiAgICB7IDE0LCAyMCwgIDJ9LCB7IDE0LCAyMCwgIDV9LCB7IDE0LCAyMCwgIDl9LCB7IDE0LCAyMCwgMTB9LAogICAgeyAxNCwgMjAsIDExfSwgeyAxNCwgMjAsIDE3fSwgeyAxNCwgMjAsIDE5fSwgeyAxNCwgMjAsIDIxfSwKICAgIHsgMTQsIDIwLCAyM30sIHsgMTQsIDIxLCAgMX0sIHsgMTQsIDIxLCAyMn0sIHsgMTQsIDIyLCAgMX0sCiAgICB7IDE0LCAyMywgIDF9LCB7IDE0LCAyMywgIDJ9LCB7IDE0LCAyMywgIDV9LCB7IDE0LCAyMywgIDl9LAogICAgeyAxNCwgMjMsIDE3fSwgeyAxNCwgMjMsIDE5fSwgeyAxNCwgMjMsIDIxfSwgeyAxNCwgMjYsICAxfSwKICAgIHsgMTQsIDI2LCAgNX0sIHsgMTQsIDI2LCAgOX0sIHsgMTQsIDI2LCAxN30sIHsgMTQsIDI3LCAgMX0sCiAgICB7IDE0LCAyNywgIDJ9LCB7IDE0LCAyNywgIDV9LCB7IDE0LCAyNywgIDl9LCB7IDE0LCAyNywgMTd9LAogICAgeyAxNCwgMjcsIDE5fSwgeyAxNCwgMjcsIDIxfSwgeyAxNCwgMjcsIDIzfSwgeyAxNCwgMjksICAxfSwKICAgIHsgMTQsIDI5LCAgMn0sIHsgMTQsIDI5LCAgNX0sIHsgMTQsIDI5LCAgOH0sIHsgMTQsIDI5LCAgOX0sCiAgICB7IDE0LCAyOSwgMTF9LCB7IDE0LCAyOSwgMTd9LCB7IDE0LCAyOSwgMTl9LCB7IDE0LCAyOSwgMjF9LAogICAgeyAxNCwgMjksIDIzfSwgeyAxNCwgMjksIDI0fSwgeyAxNCwgMjksIDI3fSwgeyAxNCwgMjksIDI4fSwKICAgIHsgMTUsICAzLCAgMX0sIHsgMTUsICAzLCAgMn0sIHsgMTUsICAzLCAgNX0sIHsgMTUsICAzLCAgN30sCiAgICB7IDE1LCAgMywgIDl9LCB7IDE1LCAgMywgMTJ9LCB7IDE1LCAgMywgMTd9LCB7IDE1LCAgMywgMTl9LAogICAgeyAxNSwgIDMsIDIxfSwgeyAxNSwgIDMsIDIyfSwgeyAxNSwgIDMsIDIzfSwgeyAxNSwgIDQsICAxfSwKICAgIHsgMTUsICA0LCAgMn0sIHsgMTUsICA0LCAgNX0sIHsgMTUsICA0LCAgOX0sIHsgMTUsICA0LCAxN30sCiAgICB7IDE1LCAgNCwgMTl9LCB7IDE1LCAgNCwgMjF9LCB7IDE1LCAgNCwgMjJ9LCB7IDE1LCAgNCwgMjN9LAogICAgeyAxNSwgIDUsICAxfSwgeyAxNSwgIDUsICA1fSwgeyAxNSwgIDUsIDIzfSwgeyAxNSwgIDcsICAxfSwKICAgIHsgMTUsICA3LCAgMn0sIHsgMTUsICA3LCAgNX0sIHsgMTUsICA3LCAgOX0sIHsgMTUsICA3LCAxN30sCiAgICB7IDE1LCAgNywgMTl9LCB7IDE1LCAgNywgMjF9LCB7IDE1LCAgNywgMjJ9LCB7IDE1LCAgNywgMjN9LAogICAgeyAxNSwgMTAsICAxfSwgeyAxNSwgMTAsIDIzfSwgeyAxNSwgMTEsICAxfSwgeyAxNSwgMTEsIDIyfSwKICAgIHsgMTUsIDEzLCAgMX0sIHsgMTUsIDEzLCAgMn0sIHsgMTUsIDEzLCAgNX0sIHsgMTUsIDEzLCAgOX0sCiAgICB7IDE1LCAxMywgMTd9LCB7IDE1LCAxMywgMTl9LCB7IDE1LCAxMywgMjF9LCB7IDE1LCAxMywgMjN9LAogICAgeyAxNSwgMTMsIDI1fSwgeyAxNSwgMTQsICAxfSwgeyAxNSwgMTQsICAyfSwgeyAxNSwgMTQsICA5fSwKICAgIHsgMTUsIDE0LCAyMn0sIHsgMTUsIDE1LCAgMX0sIHsgMTUsIDE1LCAyMn0sIHsgMTUsIDE4LCAgMX0sCiAgICB7IDE1LCAxOCwgIDV9LCB7IDE1LCAxOCwgIDl9LCB7IDE1LCAxOCwgMTd9LCB7IDE1LCAxOCwgMTl9LAogICAgeyAxNSwgMTksIDIzfSwgeyAxNSwgMjAsICAxfSwgeyAxNSwgMjAsICAyfSwgeyAxNSwgMjAsICA1fSwKICAgIHsgMTUsIDIwLCAgOX0sIHsgMTUsIDIwLCAxN30sIHsgMTUsIDIwLCAxOX0sIHsgMTUsIDIwLCAyM30sCiAgICB7IDE1LCAyMSwgIDF9LCB7IDE1LCAyMSwgMjJ9LCB7IDE1LCAyMSwgMjN9LCB7IDE1LCAyMywgIDF9LAogICAgeyAxNSwgMjYsICAxfSwgeyAxNSwgMjcsICAxfSwgeyAxNSwgMjcsIDE3fSwgeyAxNSwgMjcsIDIxfSwKICAgIHsgMTUsIDI3LCAyM30sIHsgMTUsIDI5LCAgMX0sIHsgMTUsIDI5LCAgMn0sIHsgMTUsIDI5LCAgNX0sCiAgICB7IDE1LCAyOSwgIDl9LCB7IDE1LCAyOSwgMTd9LCB7IDE1LCAyOSwgMTl9LCB7IDE1LCAyOSwgMjN9LAogICAgeyAxNSwgMjksIDI0fSwgeyAxNSwgMjksIDI5fSwgeyAxNiwgIDMsICAxfSwgeyAxNiwgIDMsICAyfSwKICAgIHsgMTYsICAzLCAgNX0sIHsgMTYsICAzLCAgN30sIHsgMTYsICAzLCAgOX0sIHsgMTYsICAzLCAxN30sCiAgICB7IDE2LCAgMywgMTl9LCB7IDE2LCAgMywgMjF9LCB7IDE2LCAgMywgMjJ9LCB7IDE2LCAgMywgMjN9LAogICAgeyAxNiwgIDMsIDI0fSwgeyAxNiwgIDQsICAxfSwgeyAxNiwgIDQsICAyfSwgeyAxNiwgIDQsICA1fSwKICAgIHsgMTYsICA0LCAgOX0sIHsgMTYsICA0LCAxN30sIHsgMTYsICA0LCAxOX0sIHsgMTYsICA0LCAyMX0sCiAgICB7IDE2LCAgNCwgMjJ9LCB7IDE2LCAgNCwgMjN9LCB7IDE2LCAgNSwgIDF9LCB7IDE2LCAgNSwgIDV9LAogICAgeyAxNiwgIDUsICA3fSwgeyAxNiwgIDUsICA5fSwgeyAxNiwgIDUsIDE3fSwgeyAxNiwgIDUsIDIzfSwKICAgIHsgMTYsICA3LCAgMX0sIHsgMTYsICA3LCAgMn0sIHsgMTYsICA3LCAgNX0sIHsgMTYsICA3LCAgOX0sCiAgICB7IDE2LCAgNywgMTd9LCB7IDE2LCAgNywgMTl9LCB7IDE2LCAgNywgMjF9LCB7IDE2LCAgNywgMjJ9LAogICAgeyAxNiwgIDcsIDIzfSwgeyAxNiwgMTAsICAxfSwgeyAxNiwgMTAsICAyfSwgeyAxNiwgMTAsICA1fSwKICAgIHsgMTYsIDEwLCAgOX0sIHsgMTYsIDEwLCAxN30sIHsgMTYsIDEwLCAxOX0sIHsgMTYsIDEwLCAyMX0sCiAgICB7IDE2LCAxMCwgMjN9LCB7IDE2LCAxMSwgIDF9LCB7IDE2LCAxMSwgIDV9LCB7IDE2LCAxMSwgMjJ9LAogICAgeyAxNiwgMTIsICAxfSwgeyAxNiwgMTIsICA1fSwgeyAxNiwgMTIsIDIzfSwgeyAxNiwgMTMsICAxfSwKICAgIHsgMTYsIDEzLCAgMn0sIHsgMTYsIDEzLCAgNX0sIHsgMTYsIDEzLCAgOX0sIHsgMTYsIDEzLCAxN30sCiAgICB7IDE2LCAxMywgMTl9LCB7IDE2LCAxMywgMjF9LCB7IDE2LCAxMywgMjN9LCB7IDE2LCAxNCwgIDF9LAogICAgeyAxNiwgMTQsICA1fSwgeyAxNiwgMTQsICA5fSwgeyAxNiwgMTQsIDIzfSwgeyAxNiwgMTgsICAxfSwKICAgIHsgMTYsIDE4LCAgNX0sIHsgMTYsIDE4LCAgOX0sIHsgMTYsIDE4LCAxN30sIHsgMTYsIDE4LCAxOX0sCiAgICB7IDE2LCAxOCwgMjF9LCB7IDE2LCAxOCwgMjN9LCB7IDE2LCAxOSwgIDF9LCB7IDE2LCAxOSwgMTd9LAogICAgeyAxNiwgMjAsICAxfSwgeyAxNiwgMjAsICAyfSwgeyAxNiwgMjAsICA1fSwgeyAxNiwgMjAsICA5fSwKICAgIHsgMTYsIDIwLCAxN30sIHsgMTYsIDIwLCAxOX0sIHsgMTYsIDIwLCAyMX0sIHsgMTYsIDIwLCAyM30sCiAgICB7IDE2LCAyMSwgIDF9LCB7IDE2LCAyMSwgMjJ9LCB7IDE2LCAyMiwgIDF9LCB7IDE2LCAyMiwgIDV9LAogICAgeyAxNiwgMjMsICAxfSwgeyAxNiwgMjMsICA1fSwgeyAxNiwgMjMsICA5fSwgeyAxNiwgMjMsIDE3fSwKICAgIHsgMTYsIDIzLCAxOX0sIHsgMTYsIDIzLCAyMX0sIHsgMTYsIDIzLCAyM30sIHsgMTYsIDI2LCAgMX0sCiAgICB7IDE2LCAyNiwgIDV9LCB7IDE2LCAyNiwgIDl9LCB7IDE2LCAyNiwgMTd9LCB7IDE2LCAyNiwgMjN9LAogICAgeyAxNiwgMjcsICAxfSwgeyAxNiwgMjcsICAyfSwgeyAxNiwgMjcsICA1fSwgeyAxNiwgMjcsICA5fSwKICAgIHsgMTYsIDI3LCAxN30sIHsgMTYsIDI3LCAxOX0sIHsgMTYsIDI3LCAyMX0sIHsgMTYsIDI3LCAyM30sCiAgICB7IDE2LCAyOSwgIDF9LCB7IDE2LCAyOSwgIDJ9LCB7IDE2LCAyOSwgIDV9LCB7IDE2LCAyOSwgIDh9LAogICAgeyAxNiwgMjksICA5fSwgeyAxNiwgMjksIDEwfSwgeyAxNiwgMjksIDE3fSwgeyAxNiwgMjksIDE5fSwKICAgIHsgMTYsIDI5LCAyMX0sIHsgMTYsIDI5LCAyM30sIHsgMTcsICAzLCAgMX0sIHsgMTcsICAzLCAgMn0sCiAgICB7IDE3LCAgMywgIDV9LCB7IDE3LCAgMywgIDl9LCB7IDE3LCAgMywgMTd9LCB7IDE3LCAgMywgMTl9LAogICAgeyAxNywgIDMsIDIxfSwgeyAxNywgIDMsIDIzfSwgeyAxNywgIDQsICAxfSwgeyAxNywgIDQsICAyfSwKICAgIHsgMTcsICA0LCAgNX0sIHsgMTcsICA0LCAgOX0sIHsgMTcsICA0LCAxN30sIHsgMTcsICA0LCAxOX0sCiAgICB7IDE3LCAgNCwgMjF9LCB7IDE3LCAgNCwgMjJ9LCB7IDE3LCAgNCwgMjN9LCB7IDE3LCAgNSwgIDF9LAogICAgeyAxNywgIDUsICAyfSwgeyAxNywgIDUsIDIzfSwgeyAxNywgIDcsICAxfSwgeyAxNywgIDcsICAyfSwKICAgIHsgMTcsICA3LCAgNX0sIHsgMTcsICA3LCAgOH0sIHsgMTcsICA3LCAgOX0sIHsgMTcsICA3LCAxN30sCiAgICB7IDE3LCAgNywgMTl9LCB7IDE3LCAgNywgMjF9LCB7IDE3LCAgNywgMjJ9LCB7IDE3LCAgNywgMjN9LAogICAgeyAxNywgMTAsICAxfSwgeyAxNywgMTAsICAyfSwgeyAxNywgMTAsICA1fSwgeyAxNywgMTAsICA5fSwKICAgIHsgMTcsIDEwLCAxN30sIHsgMTcsIDEwLCAxOX0sIHsgMTcsIDEwLCAyMX0sIHsgMTcsIDEwLCAyM30sCiAgICB7IDE3LCAxMSwgIDF9LCB7IDE3LCAxMSwgIDV9LCB7IDE3LCAxMSwgIDl9LCB7IDE3LCAxMSwgMTd9LAogICAgeyAxNywgMTEsIDE5fSwgeyAxNywgMTEsIDIxfSwgeyAxNywgMTEsIDIyfSwgeyAxNywgMTEsIDIzfSwKICAgIHsgMTcsIDEyLCAgMX0sIHsgMTcsIDEzLCAgMX0sIHsgMTcsIDEzLCAgMn0sIHsgMTcsIDEzLCAgNX0sCiAgICB7IDE3LCAxMywgIDl9LCB7IDE3LCAxMywgMTd9LCB7IDE3LCAxMywgMTl9LCB7IDE3LCAxMywgMjF9LAogICAgeyAxNywgMTMsIDIzfSwgeyAxNywgMTQsICAxfSwgeyAxNywgMTQsICAyfSwgeyAxNywgMTQsICA1fSwKICAgIHsgMTcsIDE0LCAgOX0sIHsgMTcsIDE0LCAxN30sIHsgMTcsIDE0LCAyM30sIHsgMTcsIDE1LCAgMX0sCiAgICB7IDE3LCAxNSwgMjN9LCB7IDE3LCAxOCwgIDF9LCB7IDE3LCAxOCwgIDl9LCB7IDE3LCAxOSwgIDF9LAogICAgeyAxNywgMjAsICAxfSwgeyAxNywgMjAsICAyfSwgeyAxNywgMjAsICA1fSwgeyAxNywgMjAsICA5fSwKICAgIHsgMTcsIDIwLCAxN30sIHsgMTcsIDIwLCAxOX0sIHsgMTcsIDIwLCAyMX0sIHsgMTcsIDIwLCAyM30sCiAgICB7IDE3LCAyMSwgIDF9LCB7IDE3LCAyMSwgIDV9LCB7IDE3LCAyMSwgIDl9LCB7IDE3LCAyMSwgMjN9LAogICAgeyAxNywgMjIsICAxfSwgeyAxNywgMjIsIDIzfSwgeyAxNywgMjMsICAxfSwgeyAxNywgMjMsICAyfSwKICAgIHsgMTcsIDIzLCAgNX0sIHsgMTcsIDIzLCAgOX0sIHsgMTcsIDIzLCAxN30sIHsgMTcsIDIzLCAxOX0sCiAgICB7IDE3LCAyMywgMjF9LCB7IDE3LCAyMywgMjN9LCB7IDE3LCAyNiwgIDF9LCB7IDE3LCAyNiwgIDV9LAogICAgeyAxNywgMjYsICA5fSwgeyAxNywgMjYsIDE3fSwgeyAxNywgMjcsICAxfSwgeyAxNywgMjcsICAyfSwKICAgIHsgMTcsIDI3LCAgNX0sIHsgMTcsIDI3LCAgOX0sIHsgMTcsIDI3LCAxN30sIHsgMTcsIDI3LCAxOX0sCiAgICB7IDE3LCAyNywgMjN9LCB7IDE3LCAyOSwgIDF9LCB7IDE3LCAyOSwgIDJ9LCB7IDE3LCAyOSwgIDV9LAogICAgeyAxNywgMjksICA5fSwgeyAxNywgMjksIDE3fSwgeyAxNywgMjksIDE5fSwgeyAxNywgMjksIDIxfSwKICAgIHsgMTcsIDI5LCAyM30sIHsgMTgsICAzLCAgMX0sIHsgMTgsICAzLCAgMn0sIHsgMTgsICAzLCAgNX0sCiAgICB7IDE4LCAgMywgIDl9LCB7IDE4LCAgMywgMTB9LCB7IDE4LCAgMywgMTd9LCB7IDE4LCAgMywgMTl9LAogICAgeyAxOCwgIDMsIDIxfSwgeyAxOCwgIDMsIDIyfSwgeyAxOCwgIDMsIDIzfSwgeyAxOCwgIDQsICAxfSwKICAgIHsgMTgsICA0LCAgMn0sIHsgMTgsICA0LCAgNX0sIHsgMTgsICA0LCAgOX0sIHsgMTgsICA0LCAxN30sCiAgICB7IDE4LCAgNCwgMTl9LCB7IDE4LCAgNCwgMjF9LCB7IDE4LCAgNCwgMjJ9LCB7IDE4LCAgNCwgMjN9LAogICAgeyAxOCwgIDUsICAxfSwgeyAxOCwgIDUsIDIzfSwgeyAxOCwgIDcsICAxfSwgeyAxOCwgIDcsICAyfSwKICAgIHsgMTgsICA3LCAgNX0sIHsgMTgsICA3LCAgOX0sIHsgMTgsICA3LCAxMX0sIHsgMTgsICA3LCAxN30sCiAgICB7IDE4LCAgNywgMTl9LCB7IDE4LCAgNywgMjF9LCB7IDE4LCAgNywgMjJ9LCB7IDE4LCAgNywgMjN9LAogICAgeyAxOCwgMTAsICAxfSwgeyAxOCwgMTAsICAyfSwgeyAxOCwgMTAsICA1fSwgeyAxOCwgMTAsICA5fSwKICAgIHsgMTgsIDEwLCAxN30sIHsgMTgsIDEwLCAxOX0sIHsgMTgsIDEwLCAyMX0sIHsgMTgsIDEwLCAyM30sCiAgICB7IDE4LCAxMSwgIDF9LCB7IDE4LCAxMSwgIDV9LCB7IDE4LCAxMSwgMjJ9LCB7IDE4LCAxMiwgIDF9LAogICAgeyAxOCwgMTIsICA1fSwgeyAxOCwgMTMsICAxfSwgeyAxOCwgMTMsICAyfSwgeyAxOCwgMTMsICA1fSwKICAgIHsgMTgsIDEzLCAgOX0sIHsgMTgsIDEzLCAxN30sIHsgMTgsIDEzLCAxOX0sIHsgMTgsIDEzLCAyMX0sCiAgICB7IDE4LCAxMywgMjN9LCB7IDE4LCAxMywgMjh9LCB7IDE4LCAxNCwgIDF9LCB7IDE4LCAxNCwgIDV9LAogICAgeyAxOCwgMTUsICAxfSwgeyAxOCwgMTgsICAxfSwgeyAxOCwgMTgsICA1fSwgeyAxOCwgMTgsIDIxfSwKICAgIHsgMTgsIDE4LCAyM30sIHsgMTgsIDE5LCAgMX0sIHsgMTgsIDIwLCAgMX0sIHsgMTgsIDIwLCAgMn0sCiAgICB7IDE4LCAyMCwgIDV9LCB7IDE4LCAyMCwgIDl9LCB7IDE4LCAyMCwgMTd9LCB7IDE4LCAyMCwgMTl9LAogICAgeyAxOCwgMjAsIDIxfSwgeyAxOCwgMjAsIDIzfSwgeyAxOCwgMjEsICAxfSwgeyAxOCwgMjEsIDIyfSwKICAgIHsgMTgsIDIyLCAgMX0sIHsgMTgsIDIzLCAgMX0sIHsgMTgsIDIzLCAgMn0sIHsgMTgsIDIzLCAgNX0sCiAgICB7IDE4LCAyMywgIDl9LCB7IDE4LCAyMywgMTd9LCB7IDE4LCAyMywgMTl9LCB7IDE4LCAyMywgMjN9LAogICAgeyAxOCwgMjYsICAxfSwgeyAxOCwgMjYsICA1fSwgeyAxOCwgMjYsICA5fSwgeyAxOCwgMjYsIDE3fSwKICAgIHsgMTgsIDI2LCAyM30sIHsgMTgsIDI3LCAgMX0sIHsgMTgsIDI3LCAgMn0sIHsgMTgsIDI3LCAgNX0sCiAgICB7IDE4LCAyNywgIDh9LCB7IDE4LCAyNywgIDl9LCB7IDE4LCAyNywgMTF9LCB7IDE4LCAyNywgMTd9LAogICAgeyAxOCwgMjcsIDE5fSwgeyAxOCwgMjcsIDIxfSwgeyAxOCwgMjgsICAxfSwgeyAxOCwgMjgsICA1fSwKICAgIHsgMTgsIDI4LCAgOX0sIHsgMTgsIDI4LCAxN30sIHsgMTgsIDI4LCAxOX0sIHsgMTgsIDI5LCAgMX0sCiAgICB7IDE4LCAyOSwgIDJ9LCB7IDE4LCAyOSwgIDV9LCB7IDE4LCAyOSwgIDl9LCB7IDE4LCAyOSwgMTd9LAogICAgeyAxOCwgMjksIDE5fSwgeyAxOCwgMjksIDIxfSwgeyAxOCwgMjksIDIzfSwgeyAxOSwgIDMsICAxfSwKICAgIHsgMTksICAzLCAgMn0sIHsgMTksICAzLCAgM30sIHsgMTksICAzLCAgNX0sIHsgMTksICAzLCAgOX0sCiAgICB7IDE5LCAgMywgMTF9LCB7IDE5LCAgMywgMTd9LCB7IDE5LCAgMywgMTl9LCB7IDE5LCAgMywgMjF9LAogICAgeyAxOSwgIDMsIDIyfSwgeyAxOSwgIDMsIDIzfSwgeyAxOSwgIDMsIDI3fSwgeyAxOSwgIDQsICAxfSwKICAgIHsgMTksICA0LCAgMn0sIHsgMTksICA0LCAgNX0sIHsgMTksICA0LCAgOX0sIHsgMTksICA0LCAxN30sCiAgICB7IDE5LCAgNCwgMTl9LCB7IDE5LCAgNCwgMjF9LCB7IDE5LCAgNCwgMjJ9LCB7IDE5LCAgNCwgMjN9LAogICAgeyAxOSwgIDUsICAxfSwgeyAxOSwgIDUsICAyfSwgeyAxOSwgIDcsICAxfSwgeyAxOSwgIDcsICAyfSwKICAgIHsgMTksICA3LCAgNX0sIHsgMTksICA3LCAgOX0sIHsgMTksICA3LCAxN30sIHsgMTksICA3LCAxOX0sCiAgICB7IDE5LCAgNywgMjF9LCB7IDE5LCAgNywgMjJ9LCB7IDE5LCAgNywgMjN9LCB7IDE5LCAxMCwgIDF9LAogICAgeyAxOSwgMTAsICAyfSwgeyAxOSwgMTAsICA1fSwgeyAxOSwgMTAsICA5fSwgeyAxOSwgMTAsIDE3fSwKICAgIHsgMTksIDEwLCAxOX0sIHsgMTksIDEwLCAyMX0sIHsgMTksIDEwLCAyM30sIHsgMTksIDExLCAgMX0sCiAgICB7IDE5LCAxMSwgIDV9LCB7IDE5LCAxMSwgIDl9LCB7IDE5LCAxMSwgMTd9LCB7IDE5LCAxMSwgMTl9LAogICAgeyAxOSwgMTEsIDIyfSwgeyAxOSwgMTEsIDIzfSwgeyAxOSwgMTIsICAxfSwgeyAxOSwgMTIsICA5fSwKICAgIHsgMTksIDEyLCAxOX0sIHsgMTksIDEyLCAyMX0sIHsgMTksIDEzLCAgMX0sIHsgMTksIDEzLCAgMn0sCiAgICB7IDE5LCAxMywgIDV9LCB7IDE5LCAxMywgIDl9LCB7IDE5LCAxMywgMTd9LCB7IDE5LCAxMywgMTl9LAogICAgeyAxOSwgMTMsIDIxfSwgeyAxOSwgMTMsIDIzfSwgeyAxOSwgMTQsICAxfSwgeyAxOSwgMTQsIDIzfSwKICAgIHsgMTksIDE4LCAgMX0sIHsgMTksIDE4LCAgNX0sIHsgMTksIDE5LCAgMX0sIHsgMTksIDE5LCAgNX0sCiAgICB7IDE5LCAxOSwgIDl9LCB7IDE5LCAxOSwgMTl9LCB7IDE5LCAxOSwgMjF9LCB7IDE5LCAyMCwgIDF9LAogICAgeyAxOSwgMjAsICAyfSwgeyAxOSwgMjAsICA1fSwgeyAxOSwgMjAsICA4fSwgeyAxOSwgMjAsICA5fSwKICAgIHsgMTksIDIwLCAxMX0sIHsgMTksIDIwLCAxN30sIHsgMTksIDIwLCAxOX0sIHsgMTksIDIwLCAyMX0sCiAgICB7IDE5LCAyMCwgMjN9LCB7IDE5LCAyMSwgIDF9LCB7IDE5LCAyMSwgMjN9LCB7IDE5LCAyMywgIDF9LAogICAgeyAxOSwgMjMsICA1fSwgeyAxOSwgMjMsICA5fSwgeyAxOSwgMjMsIDE3fSwgeyAxOSwgMjMsIDIxfSwKICAgIHsgMTksIDI2LCAgMX0sIHsgMTksIDI2LCAgNX0sIHsgMTksIDI2LCAgOX0sIHsgMTksIDI2LCAxN30sCiAgICB7IDE5LCAyNiwgMjF9LCB7IDE5LCAyNiwgMjN9LCB7IDE5LCAyNywgIDF9LCB7IDE5LCAyNywgIDV9LAogICAgeyAxOSwgMjcsICA5fSwgeyAxOSwgMjcsIDE3fSwgeyAxOSwgMjcsIDE5fSwgeyAxOSwgMjcsIDIxfSwKICAgIHsgMTksIDI5LCAgMX0sIHsgMTksIDI5LCAgMn0sIHsgMTksIDI5LCAgNX0sIHsgMTksIDI5LCAgOX0sCiAgICB7IDE5LCAyOSwgMTd9LCB7IDE5LCAyOSwgMTl9LCB7IDE5LCAyOSwgMjF9LCB7IDE5LCAyOSwgMjN9LAogICAgeyAyMCwgIDMsICAxfSwgeyAyMCwgIDMsICAyfSwgeyAyMCwgIDMsICA1fSwgeyAyMCwgIDMsICA5fSwKICAgIHsgMjAsICAzLCAxNH0sIHsgMjAsICAzLCAxN30sIHsgMjAsICAzLCAxOX0sIHsgMjAsICAzLCAyMX0sCiAgICB7IDIwLCAgMywgMjN9LCB7IDIwLCAgNCwgIDF9LCB7IDIwLCAgNCwgIDJ9LCB7IDIwLCAgNCwgIDV9LAogICAgeyAyMCwgIDQsICA5fSwgeyAyMCwgIDQsIDE3fSwgeyAyMCwgIDQsIDE5fSwgeyAyMCwgIDQsIDIxfSwKICAgIHsgMjAsICA0LCAyMn0sIHsgMjAsICA0LCAyM30sIHsgMjAsICA1LCAgMX0sIHsgMjAsICA1LCAyM30sCiAgICB7IDIwLCAgNywgIDF9LCB7IDIwLCAgNywgIDJ9LCB7IDIwLCAgNywgIDV9LCB7IDIwLCAgNywgIDl9LAogICAgeyAyMCwgIDcsIDExfSwgeyAyMCwgIDcsIDE3fSwgeyAyMCwgIDcsIDE5fSwgeyAyMCwgIDcsIDIxfSwKICAgIHsgMjAsICA3LCAyM30sIHsgMjAsIDEwLCAgMX0sIHsgMjAsIDEwLCAgMn0sIHsgMjAsIDEwLCAgNX0sCiAgICB7IDIwLCAxMCwgIDl9LCB7IDIwLCAxMCwgMTd9LCB7IDIwLCAxMCwgMTl9LCB7IDIwLCAxMCwgMjF9LAogICAgeyAyMCwgMTAsIDIzfSwgeyAyMCwgMTEsICAxfSwgeyAyMCwgMTEsICAyfSwgeyAyMCwgMTEsICA1fSwKICAgIHsgMjAsIDExLCAgOX0sIHsgMjAsIDExLCAxN30sIHsgMjAsIDExLCAxOX0sIHsgMjAsIDExLCAyMX0sCiAgICB7IDIwLCAxMSwgMjJ9LCB7IDIwLCAxMSwgMjN9LCB7IDIwLCAxMiwgIDF9LCB7IDIwLCAxMiwgIDV9LAogICAgeyAyMCwgMTIsICA5fSwgeyAyMCwgMTIsIDE5fSwgeyAyMCwgMTMsICAxfSwgeyAyMCwgMTMsICAyfSwKICAgIHsgMjAsIDEzLCAgNX0sIHsgMjAsIDEzLCAgOX0sIHsgMjAsIDEzLCAxNH0sIHsgMjAsIDEzLCAxN30sCiAgICB7IDIwLCAxMywgMTl9LCB7IDIwLCAxMywgMjF9LCB7IDIwLCAxMywgMjN9LCB7IDIwLCAxMywgMjd9LAogICAgeyAyMCwgMTQsICAxfSwgeyAyMCwgMTQsICAyfSwgeyAyMCwgMTQsICA1fSwgeyAyMCwgMTQsICA5fSwKICAgIHsgMjAsIDE0LCAyMX0sIHsgMjAsIDE0LCAyM30sIHsgMjAsIDE1LCAgMX0sIHsgMjAsIDE1LCAgMn0sCiAgICB7IDIwLCAxNSwgIDV9LCB7IDIwLCAxNSwgMjF9LCB7IDIwLCAxNSwgMjN9LCB7IDIwLCAxOCwgIDF9LAogICAgeyAyMCwgMTgsICAyfSwgeyAyMCwgMTgsICA1fSwgeyAyMCwgMTgsICA5fSwgeyAyMCwgMTgsIDE5fSwKICAgIHsgMjAsIDE4LCAyMX0sIHsgMjAsIDE4LCAyM30sIHsgMjAsIDE5LCAgMX0sIHsgMjAsIDE5LCAgNX0sCiAgICB7IDIwLCAxOSwgIDl9LCB7IDIwLCAxOSwgMTl9LCB7IDIwLCAxOSwgMjF9LCB7IDIwLCAyMCwgIDF9LAogICAgeyAyMCwgMjAsICAyfSwgeyAyMCwgMjAsICA1fSwgeyAyMCwgMjAsICA5fSwgeyAyMCwgMjAsIDE0fSwKICAgIHsgMjAsIDIwLCAxN30sIHsgMjAsIDIwLCAyMX0sIHsgMjAsIDIwLCAyM30sIHsgMjAsIDIxLCAgMX0sCiAgICB7IDIwLCAyMSwgIDV9LCB7IDIwLCAyMSwgIDl9LCB7IDIwLCAyMSwgMTd9LCB7IDIwLCAyMSwgMjN9LAogICAgeyAyMCwgMjIsICAxfSwgeyAyMCwgMjIsICAyfSwgeyAyMCwgMjIsICA1fSwgeyAyMCwgMjIsICA5fSwKICAgIHsgMjAsIDIyLCAyM30sIHsgMjAsIDIzLCAgMX0sIHsgMjAsIDIzLCAgMn0sIHsgMjAsIDIzLCAgNX0sCiAgICB7IDIwLCAyMywgIDl9LCB7IDIwLCAyMywgMTd9LCB7IDIwLCAyMywgMTl9LCB7IDIwLCAyMywgMjF9LAogICAgeyAyMCwgMjMsIDIzfSwgeyAyMCwgMjYsICAxfSwgeyAyMCwgMjYsICAyfSwgeyAyMCwgMjYsICA1fSwKICAgIHsgMjAsIDI2LCAgOX0sIHsgMjAsIDI2LCAxN30sIHsgMjAsIDI2LCAyMX0sIHsgMjAsIDI2LCAyM30sCiAgICB7IDIwLCAyNywgIDF9LCB7IDIwLCAyNywgIDJ9LCB7IDIwLCAyNywgIDV9LCB7IDIwLCAyNywgIDd9LAogICAgeyAyMCwgMjcsICA4fSwgeyAyMCwgMjcsICA5fSwgeyAyMCwgMjcsIDEwfSwgeyAyMCwgMjcsIDE3fSwKICAgIHsgMjAsIDI3LCAxOX0sIHsgMjAsIDI3LCAyMX0sIHsgMjAsIDI3LCAyM30sIHsgMjAsIDI3LCAyN30sCiAgICB7IDIwLCAyOCwgIDF9LCB7IDIwLCAyOCwgIDV9LCB7IDIwLCAyOCwgIDl9LCB7IDIwLCAyOCwgMTd9LAogICAgeyAyMCwgMjgsIDE5fSwgeyAyMCwgMjgsIDIzfSwgeyAyMCwgMjksICAxfSwgeyAyMCwgMjksICAyfSwKICAgIHsgMjAsIDI5LCAgNX0sIHsgMjAsIDI5LCAgOX0sIHsgMjAsIDI5LCAxN30sIHsgMjAsIDI5LCAxOX0sCiAgICB7IDIwLCAyOSwgMjF9LCB7IDIwLCAyOSwgMjN9LAp9OwoKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBrc190YWJsZTJbXVs0XSA9CnsKICAgIHsweGE0YmYsICAxLCAgMywgIDF9LCAgezB4YTRjMCwgIDEsICA0LCAgMX0sCiAgICB7MHhhNGMxLCAgMSwgIDUsICAxfSwgIHsweGE0YzIsICAxLCAgNiwgIDF9LAogICAgezB4YTRjMywgIDEsICA3LCAgMX0sICB7MHhhNGM0LCAgMSwgMTAsICAxfSwKICAgIHsweGE0YzUsICAxLCAxMSwgIDF9LCAgezB4YTRjNiwgIDEsIDEyLCAgMX0sCiAgICB7MHhhNGM3LCAgMSwgMTMsICAxfSwgIHsweGE0YzgsICAxLCAxNCwgIDF9LAogICAgezB4YTRjOSwgIDEsIDE1LCAgMX0sICB7MHhhNGNhLCAgMSwgMTgsICAxfSwKICAgIHsweGE0Y2IsICAxLCAxOSwgIDF9LCAgezB4YTRjYywgIDEsIDIwLCAgMX0sCiAgICB7MHhhNGNkLCAgMSwgMjEsICAxfSwgIHsweGE0Y2UsICAxLCAyMiwgIDF9LAogICAgezB4YTRjZiwgIDEsIDIzLCAgMX0sICB7MHhhNGQwLCAgMSwgMjYsICAxfSwKICAgIHsweGE0ZDEsICAxLCAyNywgIDF9LCAgezB4YTRkMiwgIDEsIDI4LCAgMX0sCiAgICB7MHhhNGQzLCAgMSwgMjksICAxfSwgIHsweGE0YTEsICAyLCAgMiwgIDF9LAogICAgezB4YTRhMiwgIDMsICAyLCAgMX0sICB7MHhhNGE0LCAgNCwgIDIsICAxfSwKICAgIHsweGE0YTcsICA1LCAgMiwgIDF9LCAgezB4YTRhOCwgIDYsICAyLCAgMX0sCiAgICB7MHhhNGE5LCAgNywgIDIsICAxfSwgIHsweGE0YjEsICA4LCAgMiwgIDF9LAogICAgezB4YTRiMiwgIDksICAyLCAgMX0sICB7MHhhNGIzLCAxMCwgIDIsICAxfSwKICAgIHsweGE0YjUsIDExLCAgMiwgIDF9LCAgezB4YTRiNiwgMTIsICAyLCAgMX0sCiAgICB7MHhhNGI3LCAxMywgIDIsICAxfSwgIHsweGE0YjgsIDE0LCAgMiwgIDF9LAogICAgezB4YTRiOSwgMTUsICAyLCAgMX0sICB7MHhhNGJhLCAxNiwgIDIsICAxfSwKICAgIHsweGE0YmIsIDE3LCAgMiwgIDF9LCAgezB4YTRiYywgMTgsICAyLCAgMX0sCiAgICB7MHhhNGJkLCAxOSwgIDIsICAxfSwgIHsweGE0YmUsIDIwLCAgMiwgIDF9LAp9OwoKLyogwbbH1cf8IMPKvLogLSC/z7y6x/wgs7nA2iC6r8ivCiAqIGNvbnZlcnNpb246IGluaXRpYWwgc291bmQgb2YgY29tcG91bmQgdHlwZSAtID8/PyBvZiBjb21wbGV0aW9uIHR5cGUKICovCgpzdGF0aWMgY29uc3QgY2hhcl91IGpvaGFiX2Zjb25fdG9fd2FuW10gPQp7CiAgICAwLAogICAgMHhkNCwgMHhhMSwgMHhhMiwgMHhhNCwgMHhhNywgICAgLyogKMOkv/IpLKShLKSiLKSkLKSnICovCiAgICAweGE4LCAweGE5LCAweGIxLCAweGIyLCAweGIzLCAgICAvKiCkqCykqSyksSyksiyksyAqLwogICAgMHhiNSwgMHhiNiwgMHhiNywgMHhiOCwgMHhiOSwgICAgLyogpLUspLYspLcspLgspLkgKi8KICAgIDB4YmEsIDB4YmIsIDB4YmMsIDB4YmQsIDB4YmUgICAgIC8qIKS6LKS7LKS8LKS9LKS+ICovCn07CgovKiDBtsfVx/wgwd+8uiAtPiC/z7y6x/wgs7nA2iC6r8ivCiAqIGNvbnZlcnNpb246IG1lZGlhbCB2b3dlbCBvZiBjb21wb3VuZCB0eXBlIC0gPz8/IG9mIGNvbXBsZXRpb24gdHlwZQogKi8KCnN0YXRpYyBjb25zdCBjaGFyX3Ugam9oYWJfdm93X3RvX3dhbltdID0KewogICAgMCwgMCwKICAgIDB4ZDQsIDB4YmYsIDB4YzAsIDB4YzEsIDB4YzIsIDB4YzMsCS8qICjDpL/yKSykvyykwCykwSykwiykwyAqLwogICAgMCwgMCwKICAgIDB4YzQsIDB4YzUsIDB4YzYsIDB4YzcsIDB4YzgsIDB4YzksIC8qIKTELKTFLKTGLKTHLKTHpL8spMekwCAqLwogICAgMCwgMCwKICAgIDB4Y2EsIDB4Y2IsIDB4Y2MsIDB4Y2QsIDB4Y2UsIDB4Y2YsIC8qIKTHpNMspMsspMwspMykwyykzKTELKTMpNMgKi8KICAgIDAsIDAsCiAgICAweGQwLCAweGQxLCAweGQyLCAweGQzCSAgICAgLyogpNAspNEspNGk0yyk0yAqLwp9OwoKLyogwbbH1cf8IMG+vLogLT4gv8+8usf8ILO5wNoguq/IrwogKiBjb252ZXJzaW9uOiBmaW5hbCBjb25zb25hbnQgb2YgY29tcG91bmQgdHlwZSAtID8/PyBvZiBjb21wbGV0aW9uIHR5cGUKICovCgpzdGF0aWMgY29uc3QgY2hhcl91IGpvaGFiX2xjb25fdG9fd2FuW10gPQp7CiAgICAwLAogICAgMHhkNCwgMHhhMSwgMHhhMiwgMHhhMywgMHhhNCwgICAgLyogKMOkv/IpLCCkoSwgpKIsIKShpLUsIKSkICovCiAgICAweGE1LCAweGE2LCAweGE3LCAweGE5LCAweGFhLCAgICAvKiCkpKS4LCCkpKS+LCCkpywgpKksIKSppKEgKi8KICAgIDB4YWIsIDB4YWMsIDB4YWQsIDB4YWUsIDB4YWYsICAgIC8qIKSppLEsIKSppLIsIKSppLUsIKSppLwsIKSppL0gKi8KICAgIDB4YjAsIDB4YjEsIDAsICAgIDB4YjIsIDB4YjQsICAgIC8qIKSppL4sIKSxLCAwLCCksiwgpLKktSAqLwogICAgMHhiNSwgMHhiNiwgMHhiNywgMHhiOCwgMHhiYSwgICAgLyogpLUsIKS2LCCktywgpLgsIKS6ICovCiAgICAweGJiLCAweGJjLCAweGJkLCAweGJlCSAgICAgLyogpLssIKS8LCCkvSwgpL4gKi8KfTsKCiAgICBzdGF0aWMgdm9pZApjb252ZXJ0X2tzX3RvXzMoCiAgICBjb25zdCBjaGFyX3UgICAgKnNyYywKICAgIGludAkJICAgICpmcCwKICAgIGludAkJICAgICptcCwKICAgIGludAkJICAgICpscCkKewogICAgaW50IGggPSAqc3JjOwogICAgaW50IGxvdyA9ICooc3JjICsgMSk7CiAgICBpbnQgYzsKICAgIGludCBpOwoKICAgIGlmICgoaSA9IGhhbl9pbmRleChoLCBsb3cpKSA+PSAwCgkmJiBpIDwgKGludCkoc2l6ZW9mKGtzX3RhYmxlMSkvc2l6ZW9mKGtzX3RhYmxlMVswXSkpKQogICAgewoJKmZwID0ga3NfdGFibGUxW2ldWzBdOwoJKm1wID0ga3NfdGFibGUxW2ldWzFdOwoJKmxwID0ga3NfdGFibGUxW2ldWzJdOwogICAgfQogICAgZWxzZQogICAgewoJYyA9IChoIDw8IDgpIHwgbG93OwoJZm9yIChpID0gMDsgaSA8IDQwOyBpKyspCgkgICAgaWYgKGtzX3RhYmxlMltpXVswXSA9PSBjKQoJICAgIHsKCQkqZnAgPSBrc190YWJsZTJbaV1bMV07CgkJKm1wID0ga3NfdGFibGUyW2ldWzJdOwoJCSpscCA9IGtzX3RhYmxlMltpXVszXTsKCQlyZXR1cm47CgkgICAgfQoJKmZwID0gMHhmZjsJLyogsde3ocfIIMTateUgKGdyYXBoaWMgY29kZSkgKi8KCSptcCA9IGg7CgkqbHAgPSBsb3c7CiAgICB9Cn0KCiAgICBzdGF0aWMgaW50CmNvbnZlcnRfM190b19rcygKICAgIGludAkgICAgZnYsCiAgICBpbnQJICAgIG12LAogICAgaW50CSAgICBsdiwKICAgIGNoYXJfdSAgKmRlcykKewogICAgY2hhcl91IGtleVszXTsKICAgIHJlZ2lzdGVyIGludCBoaSwgbG8sIG1pID0gMCwgcmVzdWx0LCBmb3VuZDsKCiAgICBpZiAoZnYgPT0gMHhmZikKICAgIHsKCWRlc1swXSA9IG12OwoJZGVzWzFdID0gbHY7CglyZXR1cm4gMjsKICAgIH0KICAgIGtleVswXSA9IGZ2OwogICAga2V5WzFdID0gbXY7CiAgICBrZXlbMl0gPSBsdjsKICAgIGxvID0gMDsKICAgIGhpID0gc2l6ZW9mKGtzX3RhYmxlMSkvMyAtIDE7CiAgICBmb3VuZCA9IDA7CiAgICB3aGlsZSAobG8gKyAxIDwgaGkpCiAgICB7CgltaSA9IChsbyArIGhpKS8yOwoJcmVzdWx0ID0gU1RSTkNNUChrc190YWJsZTFbbWldLCBrZXksIDMpOwoJaWYgKHJlc3VsdCA9PSAwKQoJewoJICAgIGZvdW5kID0gMTsKCSAgICBicmVhazsKCX0KCWVsc2UgaWYgKHJlc3VsdCA+IDApCgkgICAgaGkgPSBtaTsKCWVsc2UKCSAgICBsbyA9IG1pOwogICAgfQogICAgaWYgKCFmb3VuZCkKICAgIHsKCWlmICghU1RSTkNNUChrc190YWJsZTFbbG9dLCBrZXksIDMpKQoJewoJICAgIGZvdW5kID0gMTsKCSAgICBtaSA9IGxvOwoJfQoJaWYgKCFTVFJOQ01QKGtzX3RhYmxlMVtoaV0sIGtleSwgMykpCgl7CgkgICAgZm91bmQgPSAxOwoJICAgIG1pID0gaGk7Cgl9CiAgICB9CiAgICBpZiAoIWZvdW5kKQogICAgewoJZm9yIChtaSA9IDA7IG1pIDwgNDA7IG1pKyspCgkgICAgaWYgKGtzX3RhYmxlMlttaV1bMV0gPT0gZnYgJiYga3NfdGFibGUyW21pXVsyXSA9PSBtdiAmJgoJCWtzX3RhYmxlMlttaV1bM10gPT0gbHYpCgkgICAgewoJCWRlc1swXSA9ICh1bnNpZ25lZCkoa3NfdGFibGUyW21pXVswXSkgPj4gODsKCQlkZXNbMV0gPSBrc190YWJsZTJbbWldWzBdOwoJCXJldHVybiAyOwkvKiBmb3VuZCAqLwoJICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKCWRlc1swXSA9IG1pIC8gKDB4ZmYtMHhhMSkgKyAweGIwOwoJZGVzWzFdID0gbWkgJSAoMHhmZi0weGExKSArIDB4YTE7CglyZXR1cm4gMjsJCS8qIGZvdW5kICovCiAgICB9CgogICAgLyogv8+8usf8IMelv6Egvvi02S4gYGBLUyBDIDU2MDEgLSAxOTkyIMGkurggsbPIr7/rILrOyKMgx9i8sycnCiAgICAgKiAzLjMgwP2/oSC8s7jttcgguea5/cC4t84gZW5jb2Rpbmcgx9G02S4KICAgICAqLwoKICAgICpkZXMrKyA9IDB4YTQ7CQkgICAgIC8qIMOkv/IgKi8KICAgICpkZXMrKyA9IDB4ZDQ7CiAgICAqZGVzKysgPSAweGE0OwkJICAgICAvKiCzucDatMIguPC1ziBhNCDH4L+hIMDWtNkuICovCiAgICAqZGVzKysgPSBqb2hhYl9mY29uX3RvX3dhbltmdl07CiAgICAqZGVzKysgPSAweGE0OwogICAgKmRlcysrID0gam9oYWJfdm93X3RvX3dhblttdl07CiAgICAqZGVzKysgPSAweGE0OwogICAgKmRlcysrID0gam9oYWJfbGNvbl90b193YW5bbHZdOwogICAgcmV0dXJuIDg7Cn0KCiAgICBjaGFyX3UgKgpoYW5ndWxfc3RyaW5nX2NvbnZlcnQoY2hhcl91ICpidWYsIGludCAqcF9sZW4pCnsKICAgIGNoYXJfdSAqdG1wYnVmID0gTlVMTDsKICAgIHZpbWNvbnZfVCB2YzsKCiAgICBpZiAoZW5jX3V0ZjgpCiAgICB7Cgl2Yy52Y190eXBlID0gQ09OVl9OT05FOwoJaWYgKGNvbnZlcnRfc2V0dXAoJnZjLCAoY2hhcl91ICopImV1Yy1rciIsIHBfZW5jKSA9PSBPSykKCXsKCSAgICB0bXBidWYgPSBzdHJpbmdfY29udmVydCgmdmMsIGJ1ZiwgcF9sZW4pOwoJICAgIGNvbnZlcnRfc2V0dXAoJnZjLCBOVUxMLCBOVUxMKTsKCX0KICAgIH0KCiAgICByZXR1cm4gdG1wYnVmOwp9CgogICAgY2hhcl91ICoKaGFuZ3VsX2NvbXBvc2luZ19idWZmZXJfZ2V0KGludCAqcF9sZW4pCnsKICAgIGNoYXJfdSAqdG1wYnVmID0gTlVMTDsKCiAgICBpZiAoY29tcG9zaW5nX2hhbmd1bCkKICAgIHsKCWludCBsZW4gPSAyOwoKCXRtcGJ1ZiA9IGhhbmd1bF9zdHJpbmdfY29udmVydChjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgJmxlbik7CglpZiAodG1wYnVmICE9IE5VTEwpCgl7CgkgICAgKnBfbGVuID0gbGVuOwoJfQoJZWxzZQoJewoJICAgIHRtcGJ1ZiA9IHZpbV9zdHJuc2F2ZShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgMik7CgkgICAgKnBfbGVuID0gMjsKCX0KICAgIH0KCiAgICByZXR1cm4gdG1wYnVmOwp9Cg==