Transaction executed successfully
Transaction Details
Inspect execution, participants, message data, gas usage, events and raw transaction data.
Transaction hash
0BB17ED0DFD08E66176F3C6214EEF302300CAFA8B98A5BEAD3C06A9F8BC8AB8C
Transaction overview
Execution summary
TX INDEX
0
Position in block
GAS WANTED
120,000,000
Requested gas limit
GAS USED
17,007,713
Gas consumed
FEE
2000000ugnot
Transaction fee
Participants
Message
Message #1
m_addpkg
Arguments
g1n4pl5uc4yt5r96m9w6fmdznx3x0jyg8l6arhmt25000000ugnot
Execution log
msg:0,success:true,log:,events:[]
Events
No events emitted by this transaction.
Raw encoded transaction
CvxaCgwvdm0ubV9hZGRwa2cS61oKKGcxbjRwbDV1YzR5dDVyOTZtOXc2Zm1kem54M3gwanlnOGw2YXJobXQSr1oKCHBvaW50c3YyEkJnbm8ubGFuZC9yL2cxbjRwbDV1YzR5dDVyOTZtOXc2Zm1kem54M3gwanlnOGw2YXJobXQvZ25vbWkvcG9pbnRzdjIaaQoLZ25vbW9kLnRvbWwSWm1vZHVsZSA9ICJnbm8ubGFuZC9yL2cxbjRwbDV1YzR5dDVyOTZtOXc2Zm1kem54M3gwanlnOGw2YXJobXQvZ25vbWkvcG9pbnRzdjIiCmdubyA9ICIwLjkiChrPWAoMcG9pbnRzdjIuZ25vEr5YLy8gUGFja2FnZSBwb2ludHN2MiBpcyByZWZlcnJhbCArIGNoZWNrLWluICsgdHJhZGUvY3JlYXRlIHBvaW50cyBmb3IgZ25vbWVtZXBhZC4KLy8KLy8gVHJhZGUvY3JlYXRlIGF3YXJkcyBhcmUgcGFkLW9ubHk6IGFsbG93ZWQgcGFkIHBhY2thZ2VzIGNhbGwgT25UcmFkZSAvIE9uQ3JlYXRlCi8vIGFmdGVyIGEgc3VjY2Vzc2Z1bCB1c2VyIGFjdGlvbi4gRU9BcyBjYW5ub3Qgc2VsZi1hd2FyZCB0cmFkZSBwb2ludHMuCi8vCi8vCVNldFJlZmVycmVyIC8gQ2hlY2tJbiAvIEF3YXJkUG9pbnRzIC8gTGVhZGVyYm9hcmQg4oCUIHNhbWUgYXMgdjEKLy8JQWxsb3dQYWQgLyBSZXZva2VQYWQg4oCUIGFkbWluIGFsbG93bGlzdCBvZiBwYWQgcGFja2FnZSBwYXRocwovLwlPblRyYWRlIC8gT25DcmVhdGUg4oCUIGNhbGxlZCBieSBwYWQgdmlhIGNyb3NzKGN1cikKLy8JUGFyYW1zSW5mbyDigJQgZXh0ZW5kZWQgZm9yIFVJCnBhY2thZ2UgcG9pbnRzdjIKCmltcG9ydCAoCgkiY2hhaW4iCgkiY2hhaW4vcnVudGltZSIKCSJzdHJjb252IgoJInN0cmluZ3MiCgoJImduby5sYW5kL3AvbnQvYXZsL3YwIgopCgpjb25zdCAoCglQb2ludHNSZWZlcnJlckJvbnVzICBpbnQ2NCA9IDUwCglQb2ludHNSZWZlcmVlQm9udXMgICBpbnQ2NCA9IDI1CglQb2ludHNDaGVja0luICAgICAgICBpbnQ2NCA9IDUKCUNoZWNrSW5JbnRlcnZhbEggICAgIGludDY0ID0gMTAwCgkvLyBUcmFkZSAvIGNyZWF0ZSAodjIpCglQb2ludHNDcmVhdGVCb251cyAgICBpbnQ2NCA9IDMwICAvLyBjcmVhdG9yIG9uIHN1Y2Nlc3NmdWwgQ3JlYXRlCglQb2ludHNCdXlCYXNlICAgICAgICBpbnQ2NCA9IDIgICAvLyBiYXNlIHBvaW50cyBwZXIgYnV5CglQb2ludHNTZWxsQmFzZSAgICAgICBpbnQ2NCA9IDEgICAvLyBiYXNlIHBvaW50cyBwZXIgc2VsbAoJUG9pbnRzUGVyR25vdEJ1eSAgICAgaW50NjQgPSAxMCAgLy8gZXh0cmEgcHRzIHBlciBmdWxsIEdOT1QgYm91Z2h0ICh2b2x1bWUpCglQb2ludHNQZXJHbm90U2VsbCAgICBpbnQ2NCA9IDMgICAvLyBleHRyYSBwdHMgcGVyIGZ1bGwgR05PVCBzb2xkCglNYXhUcmFkZVB0c1BlckhlaWdodCBpbnQ2NCA9IDIwMCAvLyBwZXItdXNlciBwZXItaGVpZ2h0IGNhcCAoYW50aS1zcGFtKQoJVWdub3RQZXJHbm90ICAgICAgICAgaW50NjQgPSAxXzAwMF8wMDAKCUxlYWRlcmJvYXJkTWF4ICAgICAgIGludCAgID0gNTAKCU1heExlYWRlcmJvYXJkUmV0dXJuIGludCAgID0gMjAKCU1heFBhZFBhdGhMZW4gICAgICAgIGludCAgID0gMjAwCikKCnZhciAoCglhZG1pbiAgYWRkcmVzcwoJaW5pdGVkIGJvb2wKCS8vIHBvaW50c0J5QWRkcjogYWRkcmVzcyBzdHJpbmcgLT4gaW50NjQKCXBvaW50c0J5QWRkciBhdmwuVHJlZQoJLy8gcmVmZXJyZXJPZjogYWRkcmVzcyBzdHJpbmcgLT4gcmVmZXJyZXIgYWRkcmVzcyBzdHJpbmcKCXJlZmVycmVyT2YgYXZsLlRyZWUKCS8vIGxhc3RDaGVja0luOiBhZGRyZXNzIHN0cmluZyAtPiBoZWlnaHQgaW50NjQKCWxhc3RDaGVja0luIGF2bC5UcmVlCgkvLyBhbGxvd2VkUGFkczogcGFja2FnZSBwYXRoIC0+IHRydWUKCWFsbG93ZWRQYWRzIGF2bC5UcmVlCgkvLyB0cmFkZVB0c0F0SGVpZ2h0OiAiYWRkcnxoZWlnaHQiIC0+IGludDY0IHBvaW50cyBhbHJlYWR5IGF3YXJkZWQgdGhhdCBoZWlnaHQKCXRyYWRlUHRzQXRIZWlnaHQgYXZsLlRyZWUKCS8vIHRvdGFsVHJhZGVQdHMgLyB0b3RhbENyZWF0ZVB0cyBjb3VudGVycyBmb3Igb3BzCgl0b3RhbFRyYWRlUHRzICBpbnQ2NAoJdG90YWxDcmVhdGVQdHMgaW50NjQKKQoKZnVuYyBJbml0KGN1ciByZWFsbSkgewoJaWYgaW5pdGVkIHsKCQlwYW5pYygicG9pbnRzdjI6IGFscmVhZHkgaW5pdGlhbGl6ZWQiKQoJfQoJaWYgIWN1ci5QcmV2aW91cygpLklzVXNlckNhbGwoKSB7CgkJcGFuaWMoInBvaW50c3YyOiBFT0Egb25seSIpCgl9CglhZG1pbiA9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQoJaW5pdGVkID0gdHJ1ZQoJcG9pbnRzQnlBZGRyID0gYXZsLlRyZWV7fQoJcmVmZXJyZXJPZiA9IGF2bC5UcmVle30KCWxhc3RDaGVja0luID0gYXZsLlRyZWV7fQoJYWxsb3dlZFBhZHMgPSBhdmwuVHJlZXt9Cgl0cmFkZVB0c0F0SGVpZ2h0ID0gYXZsLlRyZWV7fQoJY2hhaW4uRW1pdCgiSW5pdCIsICJhZG1pbiIsIGFkbWluLlN0cmluZygpKQp9CgpmdW5jIHJlcXVpcmVJbml0KCkgewoJaWYgIWluaXRlZCB7CgkJcGFuaWMoInBvaW50c3YyOiBjYWxsIEluaXQgZmlyc3QiKQoJfQp9CgpmdW5jIHJlcXVpcmVBZG1pbihjdXIgcmVhbG0pIHsKCXJlcXVpcmVJbml0KCkKCWlmICFjdXIuUHJldmlvdXMoKS5Jc1VzZXJDYWxsKCkgewoJCXBhbmljKCJwb2ludHN2MjogRU9BIG9ubHkiKQoJfQoJaWYgY3VyLlByZXZpb3VzKCkuQWRkcmVzcygpICE9IGFkbWluIHsKCQlwYW5pYygicG9pbnRzdjI6IG5vdCBhZG1pbiIpCgl9Cn0KCmZ1bmMgZ2V0UHRzKGFkZHIgc3RyaW5nKSBpbnQ2NCB7Cgl2IDo9IHBvaW50c0J5QWRkci5HZXQoYWRkcikKCWlmIHYgPT0gbmlsIHsKCQlyZXR1cm4gMAoJfQoJbiwgb2sgOj0gdi4oaW50NjQpCglpZiAhb2sgewoJCXJldHVybiAwCgl9CglyZXR1cm4gbgp9CgpmdW5jIGFkZFB0cyhhZGRyIHN0cmluZywgZGVsdGEgaW50NjQpIHsKCWlmIGRlbHRhID09IDAgfHwgYWRkciA9PSAiIiB7CgkJcmV0dXJuCgl9CgljdXIgOj0gZ2V0UHRzKGFkZHIpCgluZXh0IDo9IGN1ciArIGRlbHRhCglpZiBuZXh0IDwgMCB7CgkJbmV4dCA9IDAKCX0KCXBvaW50c0J5QWRkci5TZXQoYWRkciwgbmV4dCkKfQoKLy8gQWxsb3dQYWQgcmVnaXN0ZXJzIGEgcGFkIHBhY2thZ2UgcGF0aCB0aGF0IG1heSBjYWxsIE9uVHJhZGUgLyBPbkNyZWF0ZS4KZnVuYyBBbGxvd1BhZChjdXIgcmVhbG0sIHBhZFBrZyBzdHJpbmcpIHsKCXJlcXVpcmVBZG1pbihjdXIpCglwYWRQa2cgPSBzdHJpbmdzLlRyaW1TcGFjZShwYWRQa2cpCglpZiBwYWRQa2cgPT0gIiIgfHwgbGVuKHBhZFBrZykgPiBNYXhQYWRQYXRoTGVuIHsKCQlwYW5pYygicG9pbnRzdjI6IGludmFsaWQgcGFkIHBhdGgiKQoJfQoJaWYgIXN0cmluZ3MuSGFzUHJlZml4KHBhZFBrZywgImduby5sYW5kL3IvIikgewoJCXBhbmljKCJwb2ludHN2MjogcGFkIG11c3QgYmUgZ25vLmxhbmQvci/igKYiKQoJfQoJYWxsb3dlZFBhZHMuU2V0KHBhZFBrZywgdHJ1ZSkKCWNoYWluLkVtaXQoIkFsbG93UGFkIiwgInBhZCIsIHBhZFBrZykKfQoKLy8gUmV2b2tlUGFkIHJlbW92ZXMgYSBwYWQgZnJvbSB0aGUgYWxsb3dsaXN0LgpmdW5jIFJldm9rZVBhZChjdXIgcmVhbG0sIHBhZFBrZyBzdHJpbmcpIHsKCXJlcXVpcmVBZG1pbihjdXIpCglwYWRQa2cgPSBzdHJpbmdzLlRyaW1TcGFjZShwYWRQa2cpCglhbGxvd2VkUGFkcy5SZW1vdmUocGFkUGtnKQoJY2hhaW4uRW1pdCgiUmV2b2tlUGFkIiwgInBhZCIsIHBhZFBrZykKfQoKLy8gSXNQYWRBbGxvd2VkIHJlcG9ydHMgd2hldGhlciBwYXRoIG1heSBhd2FyZCB0cmFkZSBwb2ludHMuCmZ1bmMgSXNQYWRBbGxvd2VkKHBhZFBrZyBzdHJpbmcpIGJvb2wgewoJcmVxdWlyZUluaXQoKQoJcmV0dXJuIGFsbG93ZWRQYWRzLkhhcyhzdHJpbmdzLlRyaW1TcGFjZShwYWRQa2cpKQp9CgovLyBMaXN0UGFkcyByZXR1cm5zIGFsbG93ZWQgcGFkIHBhdGhzLCBvbmUgcGVyIGxpbmUuCmZ1bmMgTGlzdFBhZHMoKSBzdHJpbmcgewoJcmVxdWlyZUluaXQoKQoJb3V0IDo9ICIiCglhbGxvd2VkUGFkcy5JdGVyYXRlKCIiLCAiIiwgZnVuYyhrZXkgc3RyaW5nLCBfIGFueSkgYm9vbCB7CgkJaWYgb3V0ICE9ICIiIHsKCQkJb3V0ICs9ICJcbiIKCQl9CgkJb3V0ICs9IGtleQoJCXJldHVybiBmYWxzZQoJfSkKCXJldHVybiBvdXQKfQoKZnVuYyByZXF1aXJlQWxsb3dlZFBhZChjdXIgcmVhbG0pIHN0cmluZyB7CglyZXF1aXJlSW5pdCgpCglwcmV2IDo9IGN1ci5QcmV2aW91cygpCgkvLyBNdXN0IGJlIGEgcmVhbG0gY2FsbCAocGFkKSwgbm90IEVPQQoJaWYgcHJldi5Jc1VzZXJDYWxsKCkgewoJCXBhbmljKCJwb2ludHN2MjogcGFkIHJlYWxtIG9ubHkiKQoJfQoJcGF0aCA6PSBwcmV2LlBrZ1BhdGgoKQoJaWYgcGF0aCA9PSAiIiB8fCAhYWxsb3dlZFBhZHMuSGFzKHBhdGgpIHsKCQlwYW5pYygicG9pbnRzdjI6IHBhZCBub3QgYWxsb3dlZCIpCgl9CglyZXR1cm4gcGF0aAp9CgpmdW5jIGhlaWdodENhcEtleShhZGRyIHN0cmluZywgaCBpbnQ2NCkgc3RyaW5nIHsKCXJldHVybiBhZGRyICsgInwiICsgc3RyY29udi5Gb3JtYXRJbnQoaCwgMTApCn0KCmZ1bmMgcmVtYWluaW5nSGVpZ2h0Q2FwKGFkZHIgc3RyaW5nLCBoIGludDY0KSBpbnQ2NCB7CglrIDo9IGhlaWdodENhcEtleShhZGRyLCBoKQoJdXNlZCA6PSBpbnQ2NCgwKQoJaWYgdiA6PSB0cmFkZVB0c0F0SGVpZ2h0LkdldChrKTsgdiAhPSBuaWwgewoJCXVzZWQsIF8gPSB2LihpbnQ2NCkKCX0KCWxlZnQgOj0gTWF4VHJhZGVQdHNQZXJIZWlnaHQgLSB1c2VkCglpZiBsZWZ0IDwgMCB7CgkJcmV0dXJuIDAKCX0KCXJldHVybiBsZWZ0Cn0KCmZ1bmMgY29uc3VtZUhlaWdodENhcChhZGRyIHN0cmluZywgaCwgYXdhcmQgaW50NjQpIGludDY0IHsKCWlmIGF3YXJkIDw9IDAgewoJCXJldHVybiAwCgl9CglsZWZ0IDo9IHJlbWFpbmluZ0hlaWdodENhcChhZGRyLCBoKQoJaWYgbGVmdCA8PSAwIHsKCQlyZXR1cm4gMAoJfQoJaWYgYXdhcmQgPiBsZWZ0IHsKCQlhd2FyZCA9IGxlZnQKCX0KCWsgOj0gaGVpZ2h0Q2FwS2V5KGFkZHIsIGgpCgl1c2VkIDo9IGludDY0KDApCglpZiB2IDo9IHRyYWRlUHRzQXRIZWlnaHQuR2V0KGspOyB2ICE9IG5pbCB7CgkJdXNlZCwgXyA9IHYuKGludDY0KQoJfQoJdHJhZGVQdHNBdEhlaWdodC5TZXQoaywgdXNlZCthd2FyZCkKCXJldHVybiBhd2FyZAp9CgovLyBPblRyYWRlIGF3YXJkcyBwb2ludHMgZm9yIGEgcGFkIGJ1eSAoc2lkZT0wKSBvciBzZWxsIChzaWRlPTEpLgovLyB2b2x1bWVVZ25vdCBpcyB0aGUgR05PVCBub3Rpb25hbCBvZiB0aGUgdHJhZGUgKHNlbnQgaW4gLyByZWNlaXZlZCBvdXQpLgovLyBSZXR1cm5zIHBvaW50cyBhd2FyZGVkICgwIGlmIGNhcHBlZCkuCmZ1bmMgT25UcmFkZShjdXIgcmVhbG0sIHRyYWRlciBhZGRyZXNzLCBsYXVuY2hJRCBzdHJpbmcsIHNpZGUgaW50NjQsIHZvbHVtZVVnbm90IGludDY0KSBpbnQ2NCB7CglfID0gcmVxdWlyZUFsbG93ZWRQYWQoY3VyKQoJaWYgIXRyYWRlci5Jc1ZhbGlkKCkgewoJCXJldHVybiAwCgl9CglpZiB2b2x1bWVVZ25vdCA8IDAgewoJCXZvbHVtZVVnbm90ID0gMAoJfQoJbGF1bmNoSUQgPSBzdHJpbmdzLlRyaW1TcGFjZShsYXVuY2hJRCkKCWlmIGxhdW5jaElEID09ICIiIHsKCQlyZXR1cm4gMAoJfQoKCWJhc2UgOj0gUG9pbnRzQnV5QmFzZQoJcGVyRyA6PSBQb2ludHNQZXJHbm90QnV5CglpZiBzaWRlID09IDEgewoJCWJhc2UgPSBQb2ludHNTZWxsQmFzZQoJCXBlckcgPSBQb2ludHNQZXJHbm90U2VsbAoJfSBlbHNlIGlmIHNpZGUgIT0gMCB7CgkJLy8gaWdub3JlIG9wZW4gLyB1bmtub3duCgkJcmV0dXJuIDAKCX0KCglnbm90RnVsbCA6PSB2b2x1bWVVZ25vdCAvIFVnbm90UGVyR25vdAoJYXdhcmQgOj0gYmFzZSArIGdub3RGdWxsKnBlckcKCWlmIGF3YXJkIDw9IDAgewoJCXJldHVybiAwCgl9CgoJbWUgOj0gdHJhZGVyLlN0cmluZygpCgloIDo9IHJ1bnRpbWUuQ2hhaW5IZWlnaHQoKQoJYXdhcmQgPSBjb25zdW1lSGVpZ2h0Q2FwKG1lLCBoLCBhd2FyZCkKCWlmIGF3YXJkIDw9IDAgewoJCXJldHVybiAwCgl9CglhZGRQdHMobWUsIGF3YXJkKQoJdG90YWxUcmFkZVB0cyArPSBhd2FyZAoJY2hhaW4uRW1pdCgiT25UcmFkZSIsCgkJInRyYWRlciIsIG1lLAoJCSJpZCIsIGxhdW5jaElELAoJCSJzaWRlIiwgc3RyY29udi5Gb3JtYXRJbnQoc2lkZSwgMTApLAoJCSJ2b2wiLCBzdHJjb252LkZvcm1hdEludCh2b2x1bWVVZ25vdCwgMTApLAoJCSJwdHMiLCBzdHJjb252LkZvcm1hdEludChhd2FyZCwgMTApLAoJKQoJcmV0dXJuIGF3YXJkCn0KCi8vIE9uQ3JlYXRlIGF3YXJkcyBjcmVhdGUgYm9udXMgdG8gdGhlIGxhdW5jaCBjcmVhdG9yIChwYWQtb25seSkuCmZ1bmMgT25DcmVhdGUoY3VyIHJlYWxtLCBjcmVhdG9yIGFkZHJlc3MsIGxhdW5jaElEIHN0cmluZykgaW50NjQgewoJXyA9IHJlcXVpcmVBbGxvd2VkUGFkKGN1cikKCWlmICFjcmVhdG9yLklzVmFsaWQoKSB7CgkJcmV0dXJuIDAKCX0KCWxhdW5jaElEID0gc3RyaW5ncy5UcmltU3BhY2UobGF1bmNoSUQpCglpZiBsYXVuY2hJRCA9PSAiIiB7CgkJcmV0dXJuIDAKCX0KCW1lIDo9IGNyZWF0b3IuU3RyaW5nKCkKCWggOj0gcnVudGltZS5DaGFpbkhlaWdodCgpCglhd2FyZCA6PSBjb25zdW1lSGVpZ2h0Q2FwKG1lLCBoLCBQb2ludHNDcmVhdGVCb251cykKCWlmIGF3YXJkIDw9IDAgewoJCXJldHVybiAwCgl9CglhZGRQdHMobWUsIGF3YXJkKQoJdG90YWxDcmVhdGVQdHMgKz0gYXdhcmQKCWNoYWluLkVtaXQoIk9uQ3JlYXRlIiwgImNyZWF0b3IiLCBtZSwgImlkIiwgbGF1bmNoSUQsICJwdHMiLCBzdHJjb252LkZvcm1hdEludChhd2FyZCwgMTApKQoJcmV0dXJuIGF3YXJkCn0KCi8vIFNldFJlZmVycmVyIGJpbmRzIGNhbGxlciB0byBhIHJlZmVycmVyIG9uY2UuIFNlbGYtcmVmZXJyYWwgcmVqZWN0ZWQuCmZ1bmMgU2V0UmVmZXJyZXIoY3VyIHJlYWxtLCByZWZlcnJlciBhZGRyZXNzKSB7CglyZXF1aXJlSW5pdCgpCglpZiAhY3VyLlByZXZpb3VzKCkuSXNVc2VyQ2FsbCgpIHsKCQlwYW5pYygicG9pbnRzdjI6IEVPQSBvbmx5IikKCX0KCWlmICFyZWZlcnJlci5Jc1ZhbGlkKCkgewoJCXBhbmljKCJwb2ludHN2MjogaW52YWxpZCByZWZlcnJlciIpCgl9CgltZSA6PSBjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkKCWlmIG1lID09IHJlZmVycmVyIHsKCQlwYW5pYygicG9pbnRzdjI6IGNhbm5vdCByZWZlciBzZWxmIikKCX0KCW1lUyA6PSBtZS5TdHJpbmcoKQoJaWYgcmVmZXJyZXJPZi5IYXMobWVTKSB7CgkJcGFuaWMoInBvaW50c3YyOiByZWZlcnJlciBhbHJlYWR5IHNldCIpCgl9CglyZWZTIDo9IHJlZmVycmVyLlN0cmluZygpCglyZWZlcnJlck9mLlNldChtZVMsIHJlZlMpCglhZGRQdHMocmVmUywgUG9pbnRzUmVmZXJyZXJCb251cykKCWFkZFB0cyhtZVMsIFBvaW50c1JlZmVyZWVCb251cykKCWNoYWluLkVtaXQoIlNldFJlZmVycmVyIiwgInVzZXIiLCBtZVMsICJyZWZlcnJlciIsIHJlZlMpCn0KCi8vIENoZWNrSW4gZ3JhbnRzIFBvaW50c0NoZWNrSW4gaWYgZW5vdWdoIGhlaWdodHMgcGFzc2VkIHNpbmNlIGxhc3QgY2hlY2staW4uCmZ1bmMgQ2hlY2tJbihjdXIgcmVhbG0pIGludDY0IHsKCXJlcXVpcmVJbml0KCkKCWlmICFjdXIuUHJldmlvdXMoKS5Jc1VzZXJDYWxsKCkgewoJCXBhbmljKCJwb2ludHN2MjogRU9BIG9ubHkiKQoJfQoJbWUgOj0gY3VyLlByZXZpb3VzKCkuQWRkcmVzcygpLlN0cmluZygpCgloIDo9IHJ1bnRpbWUuQ2hhaW5IZWlnaHQoKQoJbGFzdCA6PSBpbnQ2NCgwKQoJaWYgdiA6PSBsYXN0Q2hlY2tJbi5HZXQobWUpOyB2ICE9IG5pbCB7CgkJbGFzdCwgXyA9IHYuKGludDY0KQoJfQoJaWYgbGFzdCA+IDAgJiYgaC1sYXN0IDwgQ2hlY2tJbkludGVydmFsSCB7CgkJcGFuaWMoInBvaW50c3YyOiBjaGVjay1pbiB0b28gc29vbiIpCgl9CglsYXN0Q2hlY2tJbi5TZXQobWUsIGgpCglhZGRQdHMobWUsIFBvaW50c0NoZWNrSW4pCgljaGFpbi5FbWl0KCJDaGVja0luIiwgInVzZXIiLCBtZSwgInBvaW50cyIsIHN0cmNvbnYuRm9ybWF0SW50KFBvaW50c0NoZWNrSW4sIDEwKSkKCXJldHVybiBnZXRQdHMobWUpCn0KCi8vIEF3YXJkUG9pbnRzIGlzIGFkbWluLW9ubHkgKGNhbXBhaWducyAvIGNvcnJlY3Rpb25zKS4KZnVuYyBBd2FyZFBvaW50cyhjdXIgcmVhbG0sIHRvIGFkZHJlc3MsIGFtb3VudCBpbnQ2NCkgewoJcmVxdWlyZUFkbWluKGN1cikKCWlmICF0by5Jc1ZhbGlkKCkgewoJCXBhbmljKCJwb2ludHN2MjogaW52YWxpZCB0byIpCgl9CglpZiBhbW91bnQgPT0gMCB7CgkJcGFuaWMoInBvaW50c3YyOiBhbW91bnQgemVybyIpCgl9CglhZGRQdHModG8uU3RyaW5nKCksIGFtb3VudCkKCWNoYWluLkVtaXQoIkF3YXJkIiwgInRvIiwgdG8uU3RyaW5nKCksICJhbW91bnQiLCBzdHJjb252LkZvcm1hdEludChhbW91bnQsIDEwKSkKfQoKZnVuYyBHZXRQb2ludHMoYWRkciBzdHJpbmcpIGludDY0IHsKCXJlcXVpcmVJbml0KCkKCXJldHVybiBnZXRQdHMoc3RyaW5ncy5UcmltU3BhY2UoYWRkcikpCn0KCmZ1bmMgR2V0UmVmZXJyZXIoYWRkciBzdHJpbmcpIHN0cmluZyB7CglyZXF1aXJlSW5pdCgpCgl2IDo9IHJlZmVycmVyT2YuR2V0KHN0cmluZ3MuVHJpbVNwYWNlKGFkZHIpKQoJaWYgdiA9PSBuaWwgewoJCXJldHVybiAiIgoJfQoJcywgXyA6PSB2LihzdHJpbmcpCglyZXR1cm4gcwp9CgpmdW5jIExlYWRlcmJvYXJkKG4gaW50KSBzdHJpbmcgewoJcmVxdWlyZUluaXQoKQoJaWYgbiA8PSAwIHsKCQluID0gMTAKCX0KCWlmIG4gPiBNYXhMZWFkZXJib2FyZFJldHVybiB7CgkJbiA9IE1heExlYWRlcmJvYXJkUmV0dXJuCgl9Cgl0eXBlIHJvdyBzdHJ1Y3QgewoJCWFkZHIgc3RyaW5nCgkJcHRzICBpbnQ2NAoJfQoJcm93cyA6PSBtYWtlKFtdcm93LCAwLCBMZWFkZXJib2FyZE1heCkKCXBvaW50c0J5QWRkci5JdGVyYXRlKCIiLCAiIiwgZnVuYyhrZXkgc3RyaW5nLCB2YWx1ZSBhbnkpIGJvb2wgewoJCXB0cywgXyA6PSB2YWx1ZS4oaW50NjQpCgkJaWYgcHRzIDw9IDAgewoJCQlyZXR1cm4gZmFsc2UKCQl9CgkJcm93cyA9IGFwcGVuZChyb3dzLCByb3d7YWRkcjoga2V5LCBwdHM6IHB0c30pCgkJaWYgbGVuKHJvd3MpID49IExlYWRlcmJvYXJkTWF4IHsKCQkJcmV0dXJuIHRydWUKCQl9CgkJcmV0dXJuIGZhbHNlCgl9KQoJZm9yIGkgOj0gMDsgaSA8IGxlbihyb3dzKTsgaSsrIHsKCQliZXN0IDo9IGkKCQlmb3IgaiA6PSBpICsgMTsgaiA8IGxlbihyb3dzKTsgaisrIHsKCQkJaWYgcm93c1tqXS5wdHMgPiByb3dzW2Jlc3RdLnB0cyB7CgkJCQliZXN0ID0gagoJCQl9CgkJfQoJCXJvd3NbaV0sIHJvd3NbYmVzdF0gPSByb3dzW2Jlc3RdLCByb3dzW2ldCgl9CglpZiBuID4gbGVuKHJvd3MpIHsKCQluID0gbGVuKHJvd3MpCgl9CglvdXQgOj0gIiIKCWZvciBpIDo9IDA7IGkgPCBuOyBpKysgewoJCWlmIG91dCAhPSAiIiB7CgkJCW91dCArPSAiXG4iCgkJfQoJCW91dCArPSByb3dzW2ldLmFkZHIgKyAifCIgKyBzdHJjb252LkZvcm1hdEludChyb3dzW2ldLnB0cywgMTApCgl9CglyZXR1cm4gb3V0Cn0KCmZ1bmMgVXNlckNvdW50KCkgaW50IHsKCXJlcXVpcmVJbml0KCkKCXJldHVybiBwb2ludHNCeUFkZHIuU2l6ZSgpCn0KCmZ1bmMgUGFkQ291bnQoKSBpbnQgewoJcmVxdWlyZUluaXQoKQoJcmV0dXJuIGFsbG93ZWRQYWRzLlNpemUoKQp9CgpmdW5jIFRyYW5zZmVyQWRtaW4oY3VyIHJlYWxtLCBuZXdBZG1pbiBhZGRyZXNzKSB7CglyZXF1aXJlQWRtaW4oY3VyKQoJaWYgIW5ld0FkbWluLklzVmFsaWQoKSB7CgkJcGFuaWMoInBvaW50c3YyOiBpbnZhbGlkIGFkZHJlc3MiKQoJfQoJb2xkIDo9IGFkbWluCglhZG1pbiA9IG5ld0FkbWluCgljaGFpbi5FbWl0KCJUcmFuc2ZlckFkbWluIiwgImZyb20iLCBvbGQuU3RyaW5nKCksICJ0byIsIG5ld0FkbWluLlN0cmluZygpKQp9CgpmdW5jIEFkbWluKCkgc3RyaW5nIHsKCXJlcXVpcmVJbml0KCkKCXJldHVybiBhZG1pbi5TdHJpbmcoKQp9CgovLyBQYXJhbXNJbmZvIGZvciBVSToKLy8KLy8JcmVmZXJyZXJ8cmVmZXJlZXxjaGVja0lufGludGVydmFsfGNyZWF0ZUJvbnVzfGJ1eUJhc2V8c2VsbEJhc2V8cHRzUGVyR25vdEJ1eXxwdHNQZXJHbm90U2VsbHxtYXhQZXJIZWlnaHR8dHJhZGVQdHNUb3RhbHxjcmVhdGVQdHNUb3RhbHx2MgpmdW5jIFBhcmFtc0luZm8oKSBzdHJpbmcgewoJcmV0dXJuIHN0cmNvbnYuRm9ybWF0SW50KFBvaW50c1JlZmVycmVyQm9udXMsIDEwKSArICJ8IiArCgkJc3RyY29udi5Gb3JtYXRJbnQoUG9pbnRzUmVmZXJlZUJvbnVzLCAxMCkgKyAifCIgKwoJCXN0cmNvbnYuRm9ybWF0SW50KFBvaW50c0NoZWNrSW4sIDEwKSArICJ8IiArCgkJc3RyY29udi5Gb3JtYXRJbnQoQ2hlY2tJbkludGVydmFsSCwgMTApICsgInwiICsKCQlzdHJjb252LkZvcm1hdEludChQb2ludHNDcmVhdGVCb251cywgMTApICsgInwiICsKCQlzdHJjb252LkZvcm1hdEludChQb2ludHNCdXlCYXNlLCAxMCkgKyAifCIgKwoJCXN0cmNvbnYuRm9ybWF0SW50KFBvaW50c1NlbGxCYXNlLCAxMCkgKyAifCIgKwoJCXN0cmNvbnYuRm9ybWF0SW50KFBvaW50c1Blckdub3RCdXksIDEwKSArICJ8IiArCgkJc3RyY29udi5Gb3JtYXRJbnQoUG9pbnRzUGVyR25vdFNlbGwsIDEwKSArICJ8IiArCgkJc3RyY29udi5Gb3JtYXRJbnQoTWF4VHJhZGVQdHNQZXJIZWlnaHQsIDEwKSArICJ8IiArCgkJc3RyY29udi5Gb3JtYXRJbnQodG90YWxUcmFkZVB0cywgMTApICsgInwiICsKCQlzdHJjb252LkZvcm1hdEludCh0b3RhbENyZWF0ZVB0cywgMTApICsgInx2MiIKfQoKZnVuYyBSZW5kZXIocGF0aCBzdHJpbmcpIHN0cmluZyB7CglwYXRoID0gc3RyaW5ncy5UcmltKHBhdGgsICIvIikKCWlmICFpbml0ZWQgewoJCXJldHVybiAiIyBnbm9taSBwb2ludHN2MlxuXG4+IE5vdCBpbml0aWFsaXplZC5cbiIKCX0KCW91dCA6PSAiIyBnbm9taSBwb2ludHN2MlxuXG4iCglvdXQgKz0gIi0gVXNlcnM6ICoqIiArIHN0cmNvbnYuSXRvYShwb2ludHNCeUFkZHIuU2l6ZSgpKSArICIqKlxuIgoJb3V0ICs9ICItIEFsbG93ZWQgcGFkczogKioiICsgc3RyY29udi5JdG9hKGFsbG93ZWRQYWRzLlNpemUoKSkgKyAiKipcbiIKCW91dCArPSAiLSBUcmFkZSBwdHMgaXNzdWVkOiAqKiIgKyBzdHJjb252LkZvcm1hdEludCh0b3RhbFRyYWRlUHRzLCAxMCkgKyAiKipcbiIKCW91dCArPSAiLSBDcmVhdGUgcHRzIGlzc3VlZDogKioiICsgc3RyY29udi5Gb3JtYXRJbnQodG90YWxDcmVhdGVQdHMsIDEwKSArICIqKlxuXG4iCglvdXQgKz0gIiMjIEFQSVxuXG4tIFNldFJlZmVycmVyIC8gQ2hlY2tJblxuLSBPblRyYWRlIC8gT25DcmVhdGUgKHBhZCBhbGxvd2xpc3QpXG4tIEFsbG93UGFkIC8gTGVhZGVyYm9hcmRcbiIKCV8gPSBwYXRoCglyZXR1cm4gb3V0Cn0KCmZ1bmMgcmVzZXRGb3JUZXN0KCkgewoJdmFyIHplcm8gYWRkcmVzcwoJYWRtaW4gPSB6ZXJvCglpbml0ZWQgPSBmYWxzZQoJcG9pbnRzQnlBZGRyID0gYXZsLlRyZWV7fQoJcmVmZXJyZXJPZiA9IGF2bC5UcmVle30KCWxhc3RDaGVja0luID0gYXZsLlRyZWV7fQoJYWxsb3dlZFBhZHMgPSBhdmwuVHJlZXt9Cgl0cmFkZVB0c0F0SGVpZ2h0ID0gYXZsLlRyZWV7fQoJdG90YWxUcmFkZVB0cyA9IDAKCXRvdGFsQ3JlYXRlUHRzID0gMAp9CiIiChMvZ25vLk1lbVBhY2thZ2VUeXBlEgsKCU1QVXNlckFsbCINMjUwMDAwMDB1Z25vdBITCIC4uHISDDIwMDAwMDB1Z25vdBqoAQo6ChMvdG0uUHViS2V5U2VjcDI1NmsxEiMKIQIxSbkPBmCe3ZSFiaUJ+zL/6L8e1SaZWRYmaiswDMtJkBJAPXwO5o7DIacEwLuZ1Elaq+bIiaWXusuPoI8TWxcEh1dfytdn77LlKfImlLWvm4fftKOFsJDfO/WcYt0uUzWckxooZzFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFsdXV4ZQ==