0x60d14a0b…8803sent to0x9784b427…70af·#10,193,942·view on Etherscan
data:text/plain;base64,LyogRGlzY3Vzc2lvbjoKICogaHR0cHM6Ly9kZm9odWIuZXRoCiAqLwovKiBEZXNjcmlwdGlvbjoKICogVGhpcyBmdW5jdGlvbiBrZWVwcyB0cmFjayBvZiB0aGUgZm91bmRlcidzIGZ1bmRzIGFuZCBtYWtlcyBzdXJlIHRoZXknbGwgYmUgYWJsZSB0byB0cmFuc2ZlciBvbmx5IHRoZWlyIGFzc2lnbmVkIGZ1bmRzIGludG8gdGhlaXIgd2VsbC1rbm93biB3YWxsZXRzLgogKi8KcHJhZ21hIHNvbGlkaXR5IF4wLjYuMDsKCmNvbnRyYWN0IE11bHRpU2lnVHJhbnNmZXIgewoKICAgIGZ1bmN0aW9uIG9uU3RhcnQoYWRkcmVzcywgYWRkcmVzcykgcHVibGljIHsKICAgIH0KCiAgICBmdW5jdGlvbiBvblN0b3AoYWRkcmVzcykgcHVibGljIHsKICAgIH0KCiAgICBmdW5jdGlvbiB0cmFuc2ZlcihhZGRyZXNzIHNlbmRlciwgdWludDI1NiwgYWRkcmVzcyB0bywgdWludDI1NiB2YWx1ZSwgYWRkcmVzcyB0b2tlbikgcHVibGljIHsKICAgICAgICBJTVZEUHJveHkgcHJveHkgPSBJTVZEUHJveHkobXNnLnNlbmRlcik7CiAgICAgICAgcmVxdWlyZShJTVZERnVuY3Rpb25hbGl0aWVzTWFuYWdlcihwcm94eS5nZXRNVkRGdW5jdGlvbmFsaXRpZXNNYW5hZ2VyQWRkcmVzcygpKS5pc0F1dGhvcml6ZWRGdW5jdGlvbmFsaXR5KHNlbmRlciksICJVbmF1dGhvcml6ZWQgQWNjZXNzISIpOwogICAgICAgIElTdGF0ZUhvbGRlciBzdGF0ZUhvbGRlciA9IElTdGF0ZUhvbGRlcihwcm94eS5nZXRTdGF0ZUhvbGRlckFkZHJlc3MoKSk7CiAgICAgICAgc3RyaW5nIG1lbW9yeSBrZXkgPSBnZXRLZXkodG8sIHRva2VuKTsKICAgICAgICB1aW50MjU2IG9sZFZhbHVlID0gc3RhdGVIb2xkZXIuZ2V0VWludDI1NihrZXkpOwogICAgICAgIHJlcXVpcmUob2xkVmFsdWUgPj0gdmFsdWUsICJJbnN1ZmZpY2llbnQgQmFsYW5jZSEiKTsKICAgICAgICBwcm94eS50cmFuc2Zlcih0bywgdmFsdWUsIHRva2VuKTsKICAgICAgICBzdGF0ZUhvbGRlci5zZXRVaW50MjU2KGtleSwgb2xkVmFsdWUgLSB2YWx1ZSk7CiAgICB9CgogICAgZnVuY3Rpb24gdG9TdHJpbmcoYWRkcmVzcyBfYWRkcikgcHJpdmF0ZSBwdXJlIHJldHVybnMoc3RyaW5nIG1lbW9yeSkgewogICAgICAgIGJ5dGVzMzIgdmFsdWUgPSBieXRlczMyKHVpbnQyNTYoX2FkZHIpKTsKICAgICAgICBieXRlcyBtZW1vcnkgYWxwaGFiZXQgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CgogICAgICAgIGJ5dGVzIG1lbW9yeSBzdHIgPSBuZXcgYnl0ZXMoNDIpOwogICAgICAgIHN0clswXSA9ICcwJzsKICAgICAgICBzdHJbMV0gPSAneCc7CiAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgMjA7IGkrKykgewogICAgICAgICAgICBzdHJbMitpKjJdID0gYWxwaGFiZXRbdWludCh1aW50OCh2YWx1ZVtpICsgMTJdID4+IDQpKV07CiAgICAgICAgICAgIHN0clszK2kqMl0gPSBhbHBoYWJldFt1aW50KHVpbnQ4KHZhbHVlW2kgKyAxMl0gJiAweDBmKSldOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc3RyaW5nKHN0cik7CiAgICB9CgogICAgZnVuY3Rpb24gdG9Mb3dlckNhc2Uoc3RyaW5nIG1lbW9yeSBzdHIpIHByaXZhdGUgcHVyZSByZXR1cm5zKHN0cmluZyBtZW1vcnkpIHsKICAgICAgICBieXRlcyBtZW1vcnkgYlN0ciA9IGJ5dGVzKHN0cik7CiAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgYlN0ci5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBiU3RyW2ldID0gYlN0cltpXSA+PSAweDQxICYmIGJTdHJbaV0gPD0gMHg1QSA/IGJ5dGVzMSh1aW50OChiU3RyW2ldKSArIDB4MjApIDogYlN0cltpXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHN0cmluZyhiU3RyKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRLZXkoYWRkcmVzcyB0bywgYWRkcmVzcyB0b2tlbikgcHJpdmF0ZSBwdXJlIHJldHVybnMoc3RyaW5nIG1lbW9yeSkgewogICAgICAgIHJldHVybiBzdHJpbmcoCiAgICAgICAgICAgIGFiaS5lbmNvZGVQYWNrZWQoCiAgICAgICAgICAgICAgICB0b0xvd2VyQ2FzZSh0b1N0cmluZyh0bykpLAogICAgICAgICAgICAgICAgIl8iLAogICAgICAgICAgICAgICAgdG9Mb3dlckNhc2UodG9TdHJpbmcodG9rZW4pKQogICAgICAgICAgICApCiAgICAgICAgKTsKICAgIH0KfQoKaW50ZXJmYWNlIElNVkRQcm94eSB7CiAgICBmdW5jdGlvbiBnZXRNVkRGdW5jdGlvbmFsaXRpZXNNYW5hZ2VyQWRkcmVzcygpIGV4dGVybmFsIHZpZXcgcmV0dXJucyhhZGRyZXNzKTsKICAgIGZ1bmN0aW9uIGdldFN0YXRlSG9sZGVyQWRkcmVzcygpIGV4dGVybmFsIHZpZXcgcmV0dXJucyhhZGRyZXNzKTsKICAgIGZ1bmN0aW9uIHRyYW5zZmVyKGFkZHJlc3MgcmVjZWl2ZXIsIHVpbnQyNTYgdmFsdWUsIGFkZHJlc3MgdG9rZW4pIGV4dGVybmFsOwp9CgppbnRlcmZhY2UgSVN0YXRlSG9sZGVyIHsKICAgIGZ1bmN0aW9uIGdldFVpbnQyNTYoc3RyaW5nIGNhbGxkYXRhIHZhck5hbWUpIGV4dGVybmFsIHZpZXcgcmV0dXJucyAodWludDI1Nik7CiAgICBmdW5jdGlvbiBzZXRVaW50MjU2KHN0cmluZyBjYWxsZGF0YSB2YXJOYW1lLCB1aW50MjU2IHZhbCkgZXh0ZXJuYWwgcmV0dXJucyh1aW50MjU2KTsKfQoKaW50ZXJmYWNlIElNVkRGdW5jdGlvbmFsaXRpZXNNYW5hZ2VyIHsKICAgIGZ1bmN0aW9uIGlzQXV0aG9yaXplZEZ1bmN0aW9uYWxpdHkoYWRkcmVzcyBmdW5jdGlvbmFsaXR5KSBleHRlcm5hbCB2aWV3IHJldHVybnMoYm9vbCk7Cn0=