{"matchId":"56045453","creationMatch":"match","runtimeMatch":"match","verifiedAt":"2026-10-13T10:59:43Z","creationBytecode":{"onchainBytecode":"0x6101606040526001600655348015610015575f80fd5b50604051611a15380380611a1583398101604081905261003491610221565b6001600160a01b03808516608052831660a08190526040805163411557d160e01b8152905163411557d1916004808201926020929091908290030181865afa158015610082573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a69190610266565b6001600160a01b031660c0816001600160a01b031681525050826001600160a01b031663ad7430cc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011f9190610266565b6001600160a01b0390811660e052336101005261012083905261014082905260405163095ea7b360e01b815284821660048201525f1960248201529085169063095ea7b3906044016020604051808303815f875af1158015610183573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a79190610288565b5069d3c21bcecceda10000005f81815530808252600160205260408083208490555190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916101f991815260200190565b60405180910390a3505050506102a7565b6001600160a01b038116811461021e575f80fd5b50565b5f805f8060808587031215610234575f80fd5b845161023f8161020a565b60208601519094506102508161020a565b6040860151606090960151949790965092505050565b5f60208284031215610276575f80fd5b81516102818161020a565b9392505050565b5f60208284031215610298575f80fd5b81518015158114610281575f80fd5b60805160a05160c05160e0516101005161012051610140516116bb61035a5f395f81816104ca015261119601525f8181610328015281816111b701526112bd01525f818161034f01526108bd01525f81816103eb01526106ae01525f81816102da015261065801525f81816104a3015281816105ac015261129401525f81816104230152818161060201528181610a0501528181610bd001528181610ef601528181611104015261138901526116bb5ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063931b95bb116100fe578063c0a2526c1161009e578063dd62ed3e1161006e578063dd62ed3e1461046b578063e2417e1a14610495578063e6fd6bd51461049e578063eea7570e146104c5575f80fd5b8063c0a2526c14610415578063d0abb6931461041e578063d6febde814610445578063d79875eb14610458575f80fd5b8063a37a9fc0116100d9578063a37a9fc0146102fc578063a9059cbb146103d3578063ad7430cc146103e6578063bf333f2c1461040d575f80fd5b8063931b95bb14610371578063955648371461038257806395d89b4114610397575f80fd5b8063313ce5671161016957806359cf0f001161014457806359cf0f00146102fc57806370a082311461030457806386cb90be146103235780638da5cb5b1461034a575f80fd5b8063313ce567146102ae578063334041a6146102c8578063411557d1146102d5575f80fd5b8063095ea7b3116101a4578063095ea7b31461026757806318160ddd1461028a57806323b872dd14610292578063249d39e9146102a5575f80fd5b806304ccc04d146101ca57806306fdde0314610207578063090b76c314610250575b5f80fd5b6101dd6101d8366004611499565b6104ec565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102436040518060400160405280601381526020017f696d642f61636320747269616c20746f6b656e0000000000000000000000000081525081565b6040516101fe91906114b9565b61025960045481565b6040519081526020016101fe565b61027a61027536600461150c565b610784565b60405190151581526020016101fe565b6102595f5481565b61027a6102a0366004611534565b6107fd565b61025961271081565b6102b6601281565b60405160ff90911681526020016101fe565b60055461027a9060ff1681565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259603281565b610259610312366004611499565b60016020525f908152604090205481565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b61025969d3c21bcecceda100000081565b61039561039036600461156e565b6108a5565b005b6102436040518060400160405280600581526020017f545249414c00000000000000000000000000000000000000000000000000000081525081565b61027a6103e136600461150c565b610ac9565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259606481565b6101dd61dead81565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259610453366004611585565b610ade565b610259610466366004611585565b610d3e565b6102596104793660046115a5565b600260209081525f928352604080842090915290825290205481565b61025960035481565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b5f8173ffffffffffffffffffffffffffffffffffffffff163b5f0361051257508061058c565b5f805f7fd737d0c7000000000000000000000000000000000000000000000000000000005f5260205f60045f88617530fa92503d91505f51905082158061055a575081602014155b80610578575073ffffffffffffffffffffffffffffffffffffffff81115b1561058757505f949350505050565b925050505b73ffffffffffffffffffffffffffffffffffffffff811615806105fa57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061065057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106a657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106fc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061071c575073ffffffffffffffffffffffffffffffffffffffff811630145b8061077357508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610773575073ffffffffffffffffffffffffffffffffffffffff82163b15155b1561077f57505f919050565b919050565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107eb9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461088f5761085e8382611603565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b61089a858585610f89565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610914576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460ff1615610951576040517f4313f1c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f0361098a576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af1158015610a4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6f9190611616565b610a77575f80fd5b600381905569d3c21bcecceda100000060048190556040805183815260208101929092527f67f9b61bf7b39fd24dd60467083f89ea77979db358db2804069474590a36c035910160405180910390a150565b5f610ad5338484610f89565b50600192915050565b5f600654600114610b1b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610b5c576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610b95576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015610c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611616565b610c57575f80fd5b5f612710610c66606486611635565b610c70919061164c565b90505f610c7d8286611603565b905080600354610c8d9190611684565b81600454610c9b9190611635565b610ca5919061164c565b9250821580610cb357508383105b15610cea576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f828254610cfb9190611684565b925050819055508260045f828254610d139190611603565b90915550610d249050303385610f89565b610d318583600186611069565b5050600160065592915050565b5f600654600114610d7b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610dbc576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610df5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e00333085610f89565b5f83600454610e0f9190611684565b84600354610e1d9190611635565b610e27919061164c565b90505f612710610e38606484611635565b610e42919061164c565b9050610e4e8183611603565b9250821580610e5c57508383105b15610e93576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160035f828254610ea49190611603565b925050819055508460045f828254610ebc9190611684565b90915550506040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610f51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f759190611616565b610f7d575f80fd5b610d3182825f88611069565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290610fbd908490611603565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526001602052604081208054839290610ff6908490611684565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161105c91815260200190565b60405180910390a3505050565b5f6064611077603286611635565b611081919061164c565b90505f61108e8286611603565b90505f61109a336104ec565b905073ffffffffffffffffffffffffffffffffffffffff81166110c7576110c18383611684565b91505f92505b811561118b576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815261dead6004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561115f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190611616565b61118b575f80fd5b8215611402576111db7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611684565b5a1015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696d642f6163633a20696e73756666696369656e742067617300000000000000604482015260640160405180910390fd5b6040517fef6506db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063ef6506db907f0000000000000000000000000000000000000000000000000000000000000000906044016020604051808303815f8887f193505050508015611339575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261133691810190611697565b60015b611400576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156113cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f39190611616565b6113fb575f80fd5b611402565b505b60408051861515815260208101899052908101859052606081018490526080810183905273ffffffffffffffffffffffffffffffffffffffff82169033907f9adcf0ad0cda63c4d50f26a48925cf6405df27d422a39c456b5f03f661c829829060a00160405180910390a350505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077f575f80fd5b5f602082840312156114a9575f80fd5b6114b282611476565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f806040838503121561151d575f80fd5b61152683611476565b946020939093013593505050565b5f805f60608486031215611546575f80fd5b61154f84611476565b925061155d60208501611476565b929592945050506040919091013590565b5f6020828403121561157e575f80fd5b5035919050565b5f8060408385031215611596575f80fd5b50508035926020909101359150565b5f80604083850312156115b6575f80fd5b6115bf83611476565b91506115cd60208401611476565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107f7576107f76115d6565b5f60208284031215611626575f80fd5b815180151581146114b2575f80fd5b80820281158282048414176107f7576107f76115d6565b5f8261167f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156107f7576107f76115d6565b5f602082840312156116a7575f80fd5b505191905056fea164736f6c634300081a000a0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b71270000000000000000000000004de07c2fa46d5d6ed9ceb3f38ec56d3461b3e89800000000000000000000000000000000000000000000000000000000000493e000000000000000000000000000000000000000000000000000000000000249f0","recompiledBytecode":"0x6101606040526001600655348015610015575f80fd5b50604051611a15380380611a1583398101604081905261003491610221565b6001600160a01b03808516608052831660a08190526040805163411557d160e01b8152905163411557d1916004808201926020929091908290030181865afa158015610082573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a69190610266565b6001600160a01b031660c0816001600160a01b031681525050826001600160a01b031663ad7430cc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011f9190610266565b6001600160a01b0390811660e052336101005261012083905261014082905260405163095ea7b360e01b815284821660048201525f1960248201529085169063095ea7b3906044016020604051808303815f875af1158015610183573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a79190610288565b5069d3c21bcecceda10000005f81815530808252600160205260408083208490555190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916101f991815260200190565b60405180910390a3505050506102a7565b6001600160a01b038116811461021e575f80fd5b50565b5f805f8060808587031215610234575f80fd5b845161023f8161020a565b60208601519094506102508161020a565b6040860151606090960151949790965092505050565b5f60208284031215610276575f80fd5b81516102818161020a565b9392505050565b5f60208284031215610298575f80fd5b81518015158114610281575f80fd5b60805160a05160c05160e0516101005161012051610140516116bb61035a5f395f81816104ca015261119601525f8181610328015281816111b701526112bd01525f818161034f01526108bd01525f81816103eb01526106ae01525f81816102da015261065801525f81816104a3015281816105ac015261129401525f81816104230152818161060201528181610a0501528181610bd001528181610ef601528181611104015261138901526116bb5ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063931b95bb116100fe578063c0a2526c1161009e578063dd62ed3e1161006e578063dd62ed3e1461046b578063e2417e1a14610495578063e6fd6bd51461049e578063eea7570e146104c5575f80fd5b8063c0a2526c14610415578063d0abb6931461041e578063d6febde814610445578063d79875eb14610458575f80fd5b8063a37a9fc0116100d9578063a37a9fc0146102fc578063a9059cbb146103d3578063ad7430cc146103e6578063bf333f2c1461040d575f80fd5b8063931b95bb14610371578063955648371461038257806395d89b4114610397575f80fd5b8063313ce5671161016957806359cf0f001161014457806359cf0f00146102fc57806370a082311461030457806386cb90be146103235780638da5cb5b1461034a575f80fd5b8063313ce567146102ae578063334041a6146102c8578063411557d1146102d5575f80fd5b8063095ea7b3116101a4578063095ea7b31461026757806318160ddd1461028a57806323b872dd14610292578063249d39e9146102a5575f80fd5b806304ccc04d146101ca57806306fdde0314610207578063090b76c314610250575b5f80fd5b6101dd6101d8366004611499565b6104ec565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102436040518060400160405280601381526020017f696d642f61636320747269616c20746f6b656e0000000000000000000000000081525081565b6040516101fe91906114b9565b61025960045481565b6040519081526020016101fe565b61027a61027536600461150c565b610784565b60405190151581526020016101fe565b6102595f5481565b61027a6102a0366004611534565b6107fd565b61025961271081565b6102b6601281565b60405160ff90911681526020016101fe565b60055461027a9060ff1681565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259603281565b610259610312366004611499565b60016020525f908152604090205481565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b61025969d3c21bcecceda100000081565b61039561039036600461156e565b6108a5565b005b6102436040518060400160405280600581526020017f545249414c00000000000000000000000000000000000000000000000000000081525081565b61027a6103e136600461150c565b610ac9565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259606481565b6101dd61dead81565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259610453366004611585565b610ade565b610259610466366004611585565b610d3e565b6102596104793660046115a5565b600260209081525f928352604080842090915290825290205481565b61025960035481565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b5f8173ffffffffffffffffffffffffffffffffffffffff163b5f0361051257508061058c565b5f805f7fd737d0c7000000000000000000000000000000000000000000000000000000005f5260205f60045f88617530fa92503d91505f51905082158061055a575081602014155b80610578575073ffffffffffffffffffffffffffffffffffffffff81115b1561058757505f949350505050565b925050505b73ffffffffffffffffffffffffffffffffffffffff811615806105fa57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061065057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106a657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106fc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061071c575073ffffffffffffffffffffffffffffffffffffffff811630145b8061077357508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610773575073ffffffffffffffffffffffffffffffffffffffff82163b15155b1561077f57505f919050565b919050565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107eb9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461088f5761085e8382611603565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b61089a858585610f89565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610914576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460ff1615610951576040517f4313f1c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f0361098a576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af1158015610a4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6f9190611616565b610a77575f80fd5b600381905569d3c21bcecceda100000060048190556040805183815260208101929092527f67f9b61bf7b39fd24dd60467083f89ea77979db358db2804069474590a36c035910160405180910390a150565b5f610ad5338484610f89565b50600192915050565b5f600654600114610b1b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610b5c576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610b95576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015610c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611616565b610c57575f80fd5b5f612710610c66606486611635565b610c70919061164c565b90505f610c7d8286611603565b905080600354610c8d9190611684565b81600454610c9b9190611635565b610ca5919061164c565b9250821580610cb357508383105b15610cea576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f828254610cfb9190611684565b925050819055508260045f828254610d139190611603565b90915550610d249050303385610f89565b610d318583600186611069565b5050600160065592915050565b5f600654600114610d7b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610dbc576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610df5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e00333085610f89565b5f83600454610e0f9190611684565b84600354610e1d9190611635565b610e27919061164c565b90505f612710610e38606484611635565b610e42919061164c565b9050610e4e8183611603565b9250821580610e5c57508383105b15610e93576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160035f828254610ea49190611603565b925050819055508460045f828254610ebc9190611684565b90915550506040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610f51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f759190611616565b610f7d575f80fd5b610d3182825f88611069565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290610fbd908490611603565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526001602052604081208054839290610ff6908490611684565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161105c91815260200190565b60405180910390a3505050565b5f6064611077603286611635565b611081919061164c565b90505f61108e8286611603565b90505f61109a336104ec565b905073ffffffffffffffffffffffffffffffffffffffff81166110c7576110c18383611684565b91505f92505b811561118b576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815261dead6004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561115f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190611616565b61118b575f80fd5b8215611402576111db7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611684565b5a1015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696d642f6163633a20696e73756666696369656e742067617300000000000000604482015260640160405180910390fd5b6040517fef6506db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063ef6506db907f0000000000000000000000000000000000000000000000000000000000000000906044016020604051808303815f8887f193505050508015611339575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261133691810190611697565b60015b611400576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156113cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f39190611616565b6113fb575f80fd5b611402565b505b60408051861515815260208101899052908101859052606081018490526080810183905273ffffffffffffffffffffffffffffffffffffffff82169033907f9adcf0ad0cda63c4d50f26a48925cf6405df27d422a39c456b5f03f661c829829060a00160405180910390a350505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077f575f80fd5b5f602082840312156114a9575f80fd5b6114b282611476565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f806040838503121561151d575f80fd5b61152683611476565b946020939093013593505050565b5f805f60608486031215611546575f80fd5b61154f84611476565b925061155d60208501611476565b929592945050506040919091013590565b5f6020828403121561157e575f80fd5b5035919050565b5f8060408385031215611596575f80fd5b50508035926020909101359150565b5f80604083850312156115b6575f80fd5b6115bf83611476565b91506115cd60208401611476565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107f7576107f76115d6565b5f60208284031215611626575f80fd5b815180151581146114b2575f80fd5b80820281158282048414176107f7576107f76115d6565b5f8261167f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156107f7576107f76115d6565b5f602082840312156116a7575f80fd5b505191905056fea164736f6c634300081a000a","sourceMap":"1590:7832:0:-:0;;;2942:1;2918:25;;3630:564;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3774:9:0;;;;;3793:18;;;;;;3829:16;;;-1:-1:-1;;;3829:16:0;;;;:14;;:16;;;;;;;;;;;;;;;3793:18;3829:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3821:24:0;;;-1:-1:-1;;;;;3821:24:0;;;;;3866:8;-1:-1:-1;;;;;3866:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3855:30:0;;;;;3903:10;3895:18;;3923:22;;;;3955:24;;;;3989:49;;-1:-1:-1;;;3989:49:0;;1299:32:1;;;3989:49:0;;;1281:51:1;-1:-1:-1;;1348:18:1;;;1341:34;3989:11:0;;;;;;1254:18:1;;3989:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2132:12:0;4048:11;:26;;;4102:4;4084:24;;;:9;:24;;;;;;:39;;;4138:49;4102:4;;4138:49;;;;1814:25:1;;1802:2;1787:18;;1668:177;4138:49:0;;;;;;;;3630:564;;;;1590:7832;;14:142:1;-1:-1:-1;;;;;100:31:1;;90:42;;80:70;;146:1;143;136:12;80:70;14:142;:::o;161:674::-;298:6;306;314;322;375:3;363:9;354:7;350:23;346:33;343:53;;;392:1;389;382:12;343:53;424:9;418:16;443:42;479:5;443:42;:::i;:::-;554:2;539:18;;533:25;504:5;;-1:-1:-1;567:44:1;533:25;567:44;:::i;:::-;703:2;688:18;;682:25;799:2;784:18;;;778:25;161:674;;630:7;;-1:-1:-1;161:674:1;-1:-1:-1;;;161:674:1:o;840:262::-;910:6;963:2;951:9;942:7;938:23;934:32;931:52;;;979:1;976;969:12;931:52;1011:9;1005:16;1030:42;1066:5;1030:42;:::i;:::-;1091:5;840:262;-1:-1:-1;;;840:262:1:o;1386:277::-;1453:6;1506:2;1494:9;1485:7;1481:23;1477:32;1474:52;;;1522:1;1519;1512:12;1474:52;1554:9;1548:16;1607:5;1600:13;1593:21;1586:5;1583:32;1573:60;;1629:1;1626;1619:12;1668:177;1590:7832:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa164736f6c634300081a000a","offset":6665}},"transformations":[{"type":"insert","offset":6677,"reason":"constructorArguments"}],"transformationValues":{"constructorArguments":"0x0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b71270000000000000000000000004de07c2fa46d5d6ed9ceb3f38ec56d3461b3e89800000000000000000000000000000000000000000000000000000000000493e000000000000000000000000000000000000000000000000000000000000249f0"}},"runtimeBytecode":{"onchainBytecode":"0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063931b95bb116100fe578063c0a2526c1161009e578063dd62ed3e1161006e578063dd62ed3e1461046b578063e2417e1a14610495578063e6fd6bd51461049e578063eea7570e146104c5575f80fd5b8063c0a2526c14610415578063d0abb6931461041e578063d6febde814610445578063d79875eb14610458575f80fd5b8063a37a9fc0116100d9578063a37a9fc0146102fc578063a9059cbb146103d3578063ad7430cc146103e6578063bf333f2c1461040d575f80fd5b8063931b95bb14610371578063955648371461038257806395d89b4114610397575f80fd5b8063313ce5671161016957806359cf0f001161014457806359cf0f00146102fc57806370a082311461030457806386cb90be146103235780638da5cb5b1461034a575f80fd5b8063313ce567146102ae578063334041a6146102c8578063411557d1146102d5575f80fd5b8063095ea7b3116101a4578063095ea7b31461026757806318160ddd1461028a57806323b872dd14610292578063249d39e9146102a5575f80fd5b806304ccc04d146101ca57806306fdde0314610207578063090b76c314610250575b5f80fd5b6101dd6101d8366004611499565b6104ec565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102436040518060400160405280601381526020017f696d642f61636320747269616c20746f6b656e0000000000000000000000000081525081565b6040516101fe91906114b9565b61025960045481565b6040519081526020016101fe565b61027a61027536600461150c565b610784565b60405190151581526020016101fe565b6102595f5481565b61027a6102a0366004611534565b6107fd565b61025961271081565b6102b6601281565b60405160ff90911681526020016101fe565b60055461027a9060ff1681565b6101dd7f0000000000000000000000009efa934d9fad4ae28c998a40195646b965a9724781565b610259603281565b610259610312366004611499565b60016020525f908152604090205481565b6102597f00000000000000000000000000000000000000000000000000000000000493e081565b6101dd7f0000000000000000000000004b91078b2374c956a65f7af0999cae0a935e682181565b61025969d3c21bcecceda100000081565b61039561039036600461156e565b6108a5565b005b6102436040518060400160405280600581526020017f545249414c00000000000000000000000000000000000000000000000000000081525081565b61027a6103e136600461150c565b610ac9565b6101dd7f0000000000000000000000001999a54f573dac75ce8ef62a555dba418c9b3d1081565b610259606481565b6101dd61dead81565b6101dd7f0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b712781565b610259610453366004611585565b610ade565b610259610466366004611585565b610d3e565b6102596104793660046115a5565b600260209081525f928352604080842090915290825290205481565b61025960035481565b6101dd7f0000000000000000000000004de07c2fa46d5d6ed9ceb3f38ec56d3461b3e89881565b6102597f00000000000000000000000000000000000000000000000000000000000249f081565b5f8173ffffffffffffffffffffffffffffffffffffffff163b5f0361051257508061058c565b5f805f7fd737d0c7000000000000000000000000000000000000000000000000000000005f5260205f60045f88617530fa92503d91505f51905082158061055a575081602014155b80610578575073ffffffffffffffffffffffffffffffffffffffff81115b1561058757505f949350505050565b925050505b73ffffffffffffffffffffffffffffffffffffffff811615806105fa57507f0000000000000000000000004de07c2fa46d5d6ed9ceb3f38ec56d3461b3e89873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061065057507f0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b712773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106a657507f0000000000000000000000009efa934d9fad4ae28c998a40195646b965a9724773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106fc57507f0000000000000000000000001999a54f573dac75ce8ef62a555dba418c9b3d1073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061071c575073ffffffffffffffffffffffffffffffffffffffff811630145b8061077357508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610773575073ffffffffffffffffffffffffffffffffffffffff82163b15155b1561077f57505f919050565b919050565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107eb9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461088f5761085e8382611603565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b61089a858585610f89565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004b91078b2374c956a65f7af0999cae0a935e68211614610914576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460ff1615610951576040517f4313f1c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f0361098a576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b712716906323b872dd906064016020604051808303815f875af1158015610a4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6f9190611616565b610a77575f80fd5b600381905569d3c21bcecceda100000060048190556040805183815260208101929092527f67f9b61bf7b39fd24dd60467083f89ea77979db358db2804069474590a36c035910160405180910390a150565b5f610ad5338484610f89565b50600192915050565b5f600654600114610b1b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610b5c576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610b95576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b712773ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015610c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611616565b610c57575f80fd5b5f612710610c66606486611635565b610c70919061164c565b90505f610c7d8286611603565b905080600354610c8d9190611684565b81600454610c9b9190611635565b610ca5919061164c565b9250821580610cb357508383105b15610cea576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f828254610cfb9190611684565b925050819055508260045f828254610d139190611603565b90915550610d249050303385610f89565b610d318583600186611069565b5050600160065592915050565b5f600654600114610d7b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610dbc576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610df5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e00333085610f89565b5f83600454610e0f9190611684565b84600354610e1d9190611635565b610e27919061164c565b90505f612710610e38606484611635565b610e42919061164c565b9050610e4e8183611603565b9250821580610e5c57508383105b15610e93576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160035f828254610ea49190611603565b925050819055508460045f828254610ebc9190611684565b90915550506040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b712773ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610f51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f759190611616565b610f7d575f80fd5b610d3182825f88611069565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290610fbd908490611603565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526001602052604081208054839290610ff6908490611684565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161105c91815260200190565b60405180910390a3505050565b5f6064611077603286611635565b611081919061164c565b90505f61108e8286611603565b90505f61109a336104ec565b905073ffffffffffffffffffffffffffffffffffffffff81166110c7576110c18383611684565b91505f92505b811561118b576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815261dead6004820152602481018390527f0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b712773ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561115f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190611616565b61118b575f80fd5b8215611402576111db7f00000000000000000000000000000000000000000000000000000000000249f07f00000000000000000000000000000000000000000000000000000000000493e0611684565b5a1015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696d642f6163633a20696e73756666696369656e742067617300000000000000604482015260640160405180910390fd5b6040517fef6506db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000004de07c2fa46d5d6ed9ceb3f38ec56d3461b3e898169063ef6506db907f00000000000000000000000000000000000000000000000000000000000493e0906044016020604051808303815f8887f193505050508015611339575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261133691810190611697565b60015b611400576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b7127169063a9059cbb906044016020604051808303815f875af11580156113cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f39190611616565b6113fb575f80fd5b611402565b505b60408051861515815260208101899052908101859052606081018490526080810183905273ffffffffffffffffffffffffffffffffffffffff82169033907f9adcf0ad0cda63c4d50f26a48925cf6405df27d422a39c456b5f03f661c829829060a00160405180910390a350505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077f575f80fd5b5f602082840312156114a9575f80fd5b6114b282611476565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f806040838503121561151d575f80fd5b61152683611476565b946020939093013593505050565b5f805f60608486031215611546575f80fd5b61154f84611476565b925061155d60208501611476565b929592945050506040919091013590565b5f6020828403121561157e575f80fd5b5035919050565b5f8060408385031215611596575f80fd5b50508035926020909101359150565b5f80604083850312156115b6575f80fd5b6115bf83611476565b91506115cd60208401611476565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107f7576107f76115d6565b5f60208284031215611626575f80fd5b815180151581146114b2575f80fd5b80820281158282048414176107f7576107f76115d6565b5f8261167f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156107f7576107f76115d6565b5f602082840312156116a7575f80fd5b505191905056fea164736f6c634300081a000a","recompiledBytecode":"0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063931b95bb116100fe578063c0a2526c1161009e578063dd62ed3e1161006e578063dd62ed3e1461046b578063e2417e1a14610495578063e6fd6bd51461049e578063eea7570e146104c5575f80fd5b8063c0a2526c14610415578063d0abb6931461041e578063d6febde814610445578063d79875eb14610458575f80fd5b8063a37a9fc0116100d9578063a37a9fc0146102fc578063a9059cbb146103d3578063ad7430cc146103e6578063bf333f2c1461040d575f80fd5b8063931b95bb14610371578063955648371461038257806395d89b4114610397575f80fd5b8063313ce5671161016957806359cf0f001161014457806359cf0f00146102fc57806370a082311461030457806386cb90be146103235780638da5cb5b1461034a575f80fd5b8063313ce567146102ae578063334041a6146102c8578063411557d1146102d5575f80fd5b8063095ea7b3116101a4578063095ea7b31461026757806318160ddd1461028a57806323b872dd14610292578063249d39e9146102a5575f80fd5b806304ccc04d146101ca57806306fdde0314610207578063090b76c314610250575b5f80fd5b6101dd6101d8366004611499565b6104ec565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102436040518060400160405280601381526020017f696d642f61636320747269616c20746f6b656e0000000000000000000000000081525081565b6040516101fe91906114b9565b61025960045481565b6040519081526020016101fe565b61027a61027536600461150c565b610784565b60405190151581526020016101fe565b6102595f5481565b61027a6102a0366004611534565b6107fd565b61025961271081565b6102b6601281565b60405160ff90911681526020016101fe565b60055461027a9060ff1681565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259603281565b610259610312366004611499565b60016020525f908152604090205481565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b61025969d3c21bcecceda100000081565b61039561039036600461156e565b6108a5565b005b6102436040518060400160405280600581526020017f545249414c00000000000000000000000000000000000000000000000000000081525081565b61027a6103e136600461150c565b610ac9565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259606481565b6101dd61dead81565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259610453366004611585565b610ade565b610259610466366004611585565b610d3e565b6102596104793660046115a5565b600260209081525f928352604080842090915290825290205481565b61025960035481565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b5f8173ffffffffffffffffffffffffffffffffffffffff163b5f0361051257508061058c565b5f805f7fd737d0c7000000000000000000000000000000000000000000000000000000005f5260205f60045f88617530fa92503d91505f51905082158061055a575081602014155b80610578575073ffffffffffffffffffffffffffffffffffffffff81115b1561058757505f949350505050565b925050505b73ffffffffffffffffffffffffffffffffffffffff811615806105fa57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061065057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106a657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106fc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061071c575073ffffffffffffffffffffffffffffffffffffffff811630145b8061077357508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610773575073ffffffffffffffffffffffffffffffffffffffff82163b15155b1561077f57505f919050565b919050565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107eb9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461088f5761085e8382611603565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b61089a858585610f89565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610914576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460ff1615610951576040517f4313f1c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f0361098a576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af1158015610a4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6f9190611616565b610a77575f80fd5b600381905569d3c21bcecceda100000060048190556040805183815260208101929092527f67f9b61bf7b39fd24dd60467083f89ea77979db358db2804069474590a36c035910160405180910390a150565b5f610ad5338484610f89565b50600192915050565b5f600654600114610b1b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610b5c576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610b95576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015610c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611616565b610c57575f80fd5b5f612710610c66606486611635565b610c70919061164c565b90505f610c7d8286611603565b905080600354610c8d9190611684565b81600454610c9b9190611635565b610ca5919061164c565b9250821580610cb357508383105b15610cea576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f828254610cfb9190611684565b925050819055508260045f828254610d139190611603565b90915550610d249050303385610f89565b610d318583600186611069565b5050600160065592915050565b5f600654600114610d7b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610dbc576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610df5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e00333085610f89565b5f83600454610e0f9190611684565b84600354610e1d9190611635565b610e27919061164c565b90505f612710610e38606484611635565b610e42919061164c565b9050610e4e8183611603565b9250821580610e5c57508383105b15610e93576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160035f828254610ea49190611603565b925050819055508460045f828254610ebc9190611684565b90915550506040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610f51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f759190611616565b610f7d575f80fd5b610d3182825f88611069565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290610fbd908490611603565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526001602052604081208054839290610ff6908490611684565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161105c91815260200190565b60405180910390a3505050565b5f6064611077603286611635565b611081919061164c565b90505f61108e8286611603565b90505f61109a336104ec565b905073ffffffffffffffffffffffffffffffffffffffff81166110c7576110c18383611684565b91505f92505b811561118b576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815261dead6004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561115f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190611616565b61118b575f80fd5b8215611402576111db7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611684565b5a1015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696d642f6163633a20696e73756666696369656e742067617300000000000000604482015260640160405180910390fd5b6040517fef6506db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063ef6506db907f0000000000000000000000000000000000000000000000000000000000000000906044016020604051808303815f8887f193505050508015611339575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261133691810190611697565b60015b611400576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156113cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f39190611616565b6113fb575f80fd5b611402565b505b60408051861515815260208101899052908101859052606081018490526080810183905273ffffffffffffffffffffffffffffffffffffffff82169033907f9adcf0ad0cda63c4d50f26a48925cf6405df27d422a39c456b5f03f661c829829060a00160405180910390a350505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077f575f80fd5b5f602082840312156114a9575f80fd5b6114b282611476565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f806040838503121561151d575f80fd5b61152683611476565b946020939093013593505050565b5f805f60608486031215611546575f80fd5b61154f84611476565b925061155d60208501611476565b929592945050506040919091013590565b5f6020828403121561157e575f80fd5b5035919050565b5f8060408385031215611596575f80fd5b50508035926020909101359150565b5f80604083850312156115b6575f80fd5b6115bf83611476565b91506115cd60208401611476565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107f7576107f76115d6565b5f60208284031215611626575f80fd5b815180151581146114b2575f80fd5b80820281158282048414176107f7576107f76115d6565b5f8261167f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156107f7576107f76115d6565b5f602082840312156116a7575f80fd5b505191905056fea164736f6c634300081a000a","sourceMap":"1590:7832:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7570:941;;;;;;:::i;:::-;;:::i;:::-;;;582:42:1;570:55;;;552:74;;540:2;525:18;7570:941:0;;;;;;;;1622:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2861:27::-;;;;;;;;;1265:25:1;;;1253:2;1238:18;2861:27:0;1119:177:1;8747:203:0;;;;;;:::i;:::-;;:::i;:::-;;;1771:14:1;;1764:22;1746:41;;1734:2;1719:18;8747:203:0;1606:187:1;2677:26:0;;;;;;8956:276;;;;;;:::i;:::-;;:::i;1766:36::-;;1796:6;1766:36;;1724:35;;1757:2;1724:35;;;;;2349:4:1;2337:17;;;2319:36;;2307:2;2292:18;1724:35:0;2177:184:1;2894:18:0;;;;;;;;;2328:30;;;;;1882:41;;1921:2;1882:41;;2709:44;;;;;;:::i;:::-;;;;;;;;;;;;;;2595:34;;;;;2472:30;;;;;2093:51;;2132:12;2093:51;;4413:405;;;;;;:::i;:::-;;:::i;:::-;;1679:39;;;;;;;;;;;;;;;;;;;;;8604:137;;;;;;:::i;:::-;;:::i;2364:33::-;;;;;1808:37;;1842:3;1808:37;;2014:73;;2045:42;2014:73;;2151:30;;;;;4921:661;;;;;;:::i;:::-;;:::i;5705:646::-;;;;;;:::i;:::-;;:::i;2759:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2830:25;;;;;;2187:42;;;;;2635:35;;;;;7570:941;7627:14;7657:3;:15;;;7676:1;7657:20;7653:578;;-1:-1:-1;7702:3:0;7653:578;;;7736:7;7757:12;7783:13;7863:66;7860:1;7853:77;8000:2;7997:1;7994;7991;7986:3;7979:5;7968:35;7962:41;;8028:16;8020:24;;8076:1;8070:8;8061:17;;8110:2;8109:3;:17;;;;8116:4;8124:2;8116:10;;8109:17;:46;;;-1:-1:-1;8138:17:0;8130:25;;8109:46;8105:69;;;-1:-1:-1;8172:1:0;;7570:941;-1:-1:-1;;;;7570:941:0:o;8105:69::-;8213:5;-1:-1:-1;;;7653:578:0;8257:20;;;;;:50;;;8299:7;8281:26;;:6;:26;;;8257:50;:76;;;;8329:3;8311:22;;:6;:22;;;8257:76;:111;;;;8363:5;8353:15;;:6;:15;;;8257:111;:133;;;;8382:8;8372:18;;:6;:18;;;8257:133;:160;;;-1:-1:-1;8394:23:0;;;8412:4;8394:23;8257:160;:219;;;;8448:3;8438:13;;:6;:13;;;:37;;;;-1:-1:-1;8455:15:0;;;;:20;;8438:37;8240:264;;;-1:-1:-1;8502:1:0;;7570:941;-1:-1:-1;7570:941:0:o;8240:264::-;7570:941;;;:::o;8747:203::-;8841:10;8815:4;8831:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;8885:37;8815:4;;8831:30;;8885:37;;;;8864:6;1265:25:1;;1253:2;1238:18;;1119:177;8885:37:0;;;;;;;;-1:-1:-1;8939:4:0;8747:203;;;;;:::o;8956:276::-;9066:15;;;9038:4;9066:15;;;:9;:15;;;;;;;;9082:10;9066:27;;;;;;;;9112:17;9107:22;;9103:68;;9161:10;9165:6;9161:1;:10;:::i;:::-;9131:15;;;;;;;:9;:15;;;;;;;;9147:10;9131:27;;;;;;;:40;9103:68;9181:23;9187:4;9193:2;9197:6;9181:5;:23::i;:::-;-1:-1:-1;9221:4:0;;8956:276;-1:-1:-1;;;;8956:276:0:o;4413:405::-;4469:10;:19;4483:5;4469:19;;4465:42;;4497:10;;;;;;;;;;;;;;4465:42;4521:6;;;;4517:34;;;4536:15;;;;;;;;;;;;;;4517:34;4565:9;4578:1;4565:14;4561:39;;4588:12;;;;;;;;;;;;;;4561:39;4610:6;:13;;;;4619:4;4610:13;;;4641:54;;;;;4658:10;4641:54;;;4239:74:1;4678:4:0;4329:18:1;;;4322:83;4421:18;;;4414:34;;;4641:16:0;:3;:16;;;;4212:18:1;;4641:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4633:63;;;;;;4706:10;:22;;;2132:12;4738;:27;;;4780:31;;;4915:25:1;;;4971:2;4956:18;;4949:34;;;;4780:31:0;;4888:18:1;4780:31:0;;;;;;;4413:405;:::o;8604:137::-;8668:4;8684:29;8690:10;8702:2;8706:6;8684:5;:29::i;:::-;-1:-1:-1;8730:4:0;8604:137;;;;:::o;4921:661::-;5025:16;3538:5;;3547:1;3538:10;3534:34;;3557:11;;;;;;;;;;;;;;3534:34;3586:1;3578:5;:9;5062:6:::1;::::0;::::1;;5057:31;;5077:11;;;;;;;;;;;;;;5057:31;5102:5;5111:1;5102:10:::0;5098:35:::1;;5121:12;;;;;;;;;;;;;;5098:35;5151:50;::::0;;;;5168:10:::1;5151:50;::::0;::::1;4239:74:1::0;5188:4:0::1;4329:18:1::0;;;4322:83;4421:18;;;4414:34;;;5151:3:0::1;:16;;::::0;::::1;::::0;4212:18:1;;5151:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5143:59;;;::::0;::::1;;5212:11;1796:6;5226:15;1842:3;5226:5:::0;:15:::1;:::i;:::-;:21;;;;:::i;:::-;5212:35:::0;-1:-1:-1;5257:11:0::1;5271;5212:35:::0;5271:5;:11:::1;:::i;:::-;5257:25;;5338:3;5325:10;;:16;;;;:::i;:::-;5318:3;5303:12;;:18;;;;:::i;:::-;:39;;;;:::i;:::-;5292:50:::0;-1:-1:-1;5356:13:0;;;:39:::1;;;5384:11;5373:8;:22;5356:39;5352:62;;;5404:10;;;;;;;;;;;;;;5352:62;5438:3;5424:10;;:17;;;;;;;:::i;:::-;;;;;;;;5467:8;5451:12;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;5485:42:0::1;::::0;-1:-1:-1;5499:4:0::1;5506:10;5518:8:::0;5485:5:::1;:42::i;:::-;5537:38;5548:5;5555:3;5560:4;5566:8;5537:10;:38::i;:::-;-1:-1:-1::0;;3616:1:0;3608:5;:9;4921:661;;-1:-1:-1;;4921:661:0:o;5705:646::-;5810:14;3538:5;;3547:1;3538:10;3534:34;;3557:11;;;;;;;;;;;;;;3534:34;3586:1;3578:5;:9;5845:6:::1;::::0;::::1;;5840:31;;5860:11;;;;;;;;;;;;;;5840:31;5885:7;5896:1;5885:12:::0;5881:37:::1;;5906:12;;;;;;;;;;;;;;5881:37;5928:41;5934:10;5954:4;5961:7;5928:5;:41::i;:::-;5979:13;6034:7;6019:12;;:22;;;;:::i;:::-;6008:7;5995:10;;:20;;;;:::i;:::-;:47;;;;:::i;:::-;5979:63:::0;-1:-1:-1;6052:11:0::1;1796:6;6066:15;1842:3;5979:63:::0;6066:15:::1;:::i;:::-;:21;;;;:::i;:::-;6052:35:::0;-1:-1:-1;6106:11:0::1;6052:35:::0;6106:5;:11:::1;:::i;:::-;6097:20:::0;-1:-1:-1;6131:11:0;;;:33:::1;;;6155:9;6146:6;:18;6131:33;6127:56;;;6173:10;;;;;;;;;;;;;;6127:56;6207:5;6193:10;;:19;;;;;;;:::i;:::-;;;;;;;;6238:7;6222:12;;:23;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;6263:32:0::1;::::0;;;;6276:10:::1;6263:32;::::0;::::1;5750:74:1::0;5840:18;;;5833:34;;;6263:3:0::1;:12;;::::0;::::1;::::0;5723:18:1;;6263:32:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6255:41;;;::::0;::::1;;6306:38;6317:5;6324:3;6329:5;6336:7;6306:10;:38::i;9238:182::-:0;9314:15;;;;;;;:9;:15;;;;;:25;;9333:6;;9314:15;:25;;9333:6;;9314:25;:::i;:::-;;;;-1:-1:-1;;9349:13:0;;;;;;;:9;:13;;;;;:23;;9366:6;;9349:13;:23;;9366:6;;9349:23;:::i;:::-;;;;;;;;9402:2;9387:26;;9396:4;9387:26;;;9406:6;9387:26;;;;1265:25:1;;1253:2;1238:18;;1119:177;9387:26:0;;;;;;;;9238:182;;;:::o;6446:870::-;6538:16;1842:3;6557:18;1921:2;6557:3;:18;:::i;:::-;:28;;;;:::i;:::-;6538:47;-1:-1:-1;6595:14:0;6612;6538:47;6612:3;:14;:::i;:::-;6595:31;;6636:14;6653:25;6667:10;6653:13;:25::i;:::-;6636:42;-1:-1:-1;6692:20:0;;;6688:162;;6728:18;6738:8;6728:18;;:::i;:::-;;;6838:1;6827:12;;6688:162;6863:10;;6859:51;;6883:26;;;;;2045:42;6883:26;;;5750:74:1;5840:18;;;5833:34;;;6883:3:0;:12;;;;;5723:18:1;;6883:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6875:35;;;;;;6924:12;;6920:313;;6973:22;6985:10;6973:9;:22;:::i;:::-;6960:9;:35;;6952:73;;;;;;;6080:2:1;6952:73:0;;;6062:21:1;6119:2;6099:18;;;6092:30;6158:27;6138:18;;;6131:55;6203:18;;6952:73:0;;;;;;;;7043:48;;;;;:14;5768:55:1;;;7043:48:0;;;5750:74:1;5840:18;;;5833:34;;;7043:7:0;:14;;;;7063:9;;5723:18:1;;7043:48:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7043:48:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7039:184;;7139:30;;;;;:12;5768:55:1;;;7139:30:0;;;5750:74:1;5840:18;;;5833:34;;;7139:3:0;:12;;;;5723:18:1;;7139:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7131:39;;;;;;7039:184;;;;;7247:62;;;6699:14:1;;6692:22;6674:41;;6746:2;6731:18;;6724:34;;;6774:18;;;6767:34;;;6832:2;6817:18;;6810:34;;;6875:3;6860:19;;6853:35;;;7247:62:0;;;;7253:10;;7247:62;;6661:3:1;6646:19;7247:62:0;;;;;;;6528:788;;;6446:870;;;;:::o;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;215:186;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:1:o;637:477::-;786:2;775:9;768:21;749:4;818:6;812:13;861:6;856:2;845:9;841:18;834:34;920:6;915:2;907:6;903:15;898:2;887:9;883:18;877:50;976:1;971:2;962:6;951:9;947:22;943:31;936:42;1105:2;1035:66;1030:2;1022:6;1018:15;1014:88;1003:9;999:104;995:113;987:121;;;637:477;;;;:::o;1301:300::-;1369:6;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1469:29;1488:9;1469:29;:::i;:::-;1459:39;1567:2;1552:18;;;;1539:32;;-1:-1:-1;;;1301:300:1:o;1798:374::-;1875:6;1883;1891;1944:2;1932:9;1923:7;1919:23;1915:32;1912:52;;;1960:1;1957;1950:12;1912:52;1983:29;2002:9;1983:29;:::i;:::-;1973:39;;2031:38;2065:2;2054:9;2050:18;2031:38;:::i;:::-;1798:374;;2021:48;;-1:-1:-1;;;2138:2:1;2123:18;;;;2110:32;;1798:374::o;2366:226::-;2425:6;2478:2;2466:9;2457:7;2453:23;2449:32;2446:52;;;2494:1;2491;2484:12;2446:52;-1:-1:-1;2539:23:1;;2366:226;-1:-1:-1;2366:226:1:o;2844:346::-;2912:6;2920;2973:2;2961:9;2952:7;2948:23;2944:32;2941:52;;;2989:1;2986;2979:12;2941:52;-1:-1:-1;;3034:23:1;;;3154:2;3139:18;;;3126:32;;-1:-1:-1;2844:346:1:o;3195:260::-;3263:6;3271;3324:2;3312:9;3303:7;3299:23;3295:32;3292:52;;;3340:1;3337;3330:12;3292:52;3363:29;3382:9;3363:29;:::i;:::-;3353:39;;3411:38;3445:2;3434:9;3430:18;3411:38;:::i;:::-;3401:48;;3195:260;;;;;:::o;3715:184::-;3767:77;3764:1;3757:88;3864:4;3861:1;3854:15;3888:4;3885:1;3878:15;3904:128;3971:9;;;3992:11;;;3989:37;;;4006:18;;:::i;4459:277::-;4526:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:52;;;4595:1;4592;4585:12;4547:52;4627:9;4621:16;4680:5;4673:13;4666:21;4659:5;4656:32;4646:60;;4702:1;4699;4692:12;4994:168;5067:9;;;5098;;5115:15;;;5109:22;;5095:37;5085:71;;5136:18;;:::i;5167:274::-;5207:1;5233;5223:189;;5268:77;5265:1;5258:88;5369:4;5366:1;5359:15;5397:4;5394:1;5387:15;5223:189;-1:-1:-1;5426:9:1;;5167:274::o;5446:125::-;5511:9;;;5532:10;;;5529:36;;;5545:18;;:::i;6232:184::-;6302:6;6355:2;6343:9;6334:7;6330:23;6326:32;6323:52;;;6371:1;6368;6361:12;6323:52;-1:-1:-1;6394:16:1;;6232:184;-1:-1:-1;6232:184:1:o","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa164736f6c634300081a000a","offset":5807}},"immutableReferences":{"82":[{"start":1059,"length":32},{"start":1538,"length":32},{"start":2565,"length":32},{"start":3024,"length":32},{"start":3830,"length":32},{"start":4356,"length":32},{"start":5001,"length":32}],"85":[{"start":1187,"length":32},{"start":1452,"length":32},{"start":4756,"length":32}],"88":[{"start":730,"length":32},{"start":1624,"length":32}],"90":[{"start":1003,"length":32},{"start":1710,"length":32}],"93":[{"start":847,"length":32},{"start":2237,"length":32}],"96":[{"start":808,"length":32},{"start":4535,"length":32},{"start":4797,"length":32}],"98":[{"start":1226,"length":32},{"start":4502,"length":32}]},"transformations":[{"id":"88","type":"replace","offset":730,"reason":"immutable"},{"id":"96","type":"replace","offset":808,"reason":"immutable"},{"id":"93","type":"replace","offset":847,"reason":"immutable"},{"id":"90","type":"replace","offset":1003,"reason":"immutable"},{"id":"82","type":"replace","offset":1059,"reason":"immutable"},{"id":"85","type":"replace","offset":1187,"reason":"immutable"},{"id":"98","type":"replace","offset":1226,"reason":"immutable"},{"id":"85","type":"replace","offset":1452,"reason":"immutable"},{"id":"82","type":"replace","offset":1538,"reason":"immutable"},{"id":"88","type":"replace","offset":1624,"reason":"immutable"},{"id":"90","type":"replace","offset":1710,"reason":"immutable"},{"id":"93","type":"replace","offset":2237,"reason":"immutable"},{"id":"82","type":"replace","offset":2565,"reason":"immutable"},{"id":"82","type":"replace","offset":3024,"reason":"immutable"},{"id":"82","type":"replace","offset":3830,"reason":"immutable"},{"id":"82","type":"replace","offset":4356,"reason":"immutable"},{"id":"98","type":"replace","offset":4502,"reason":"immutable"},{"id":"96","type":"replace","offset":4535,"reason":"immutable"},{"id":"85","type":"replace","offset":4756,"reason":"immutable"},{"id":"96","type":"replace","offset":4797,"reason":"immutable"},{"id":"82","type":"replace","offset":5001,"reason":"immutable"}],"transformationValues":{"immutables":{"82":"0x0000000000000000000000005f7bb59365ce557c26dbcaa4ee9d39a4b95b7127","85":"0x0000000000000000000000004de07c2fa46d5d6ed9ceb3f38ec56d3461b3e898","88":"0x0000000000000000000000009efa934d9fad4ae28c998a40195646b965a97247","90":"0x0000000000000000000000001999a54f573dac75ce8ef62a555dba418c9b3d10","93":"0x0000000000000000000000004b91078b2374c956a65f7af0999cae0a935e6821","96":"0x00000000000000000000000000000000000000000000000000000000000493e0","98":"0x00000000000000000000000000000000000000000000000000000000000249f0"}}},"deployment":{"transactionHash":"0xfa049e0a4ab889e9e735d57b613cb64e39efb76e890fb40426086aae3ea20557","blockNumber":"87459018","transactionIndex":"6","deployer":"0x4b91078b2374c956A65F7Af0999CaE0a935E6821"},"sources":{"test/trial/RemoteTrialVenue.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\ninterface IERC20Min {\n    function transfer(address to, uint256 amount) external returns (bool);\n    function transferFrom(address from, address to, uint256 amount) external returns (bool);\n    function approve(address spender, uint256 amount) external returns (bool);\n}\n\ninterface IRemoteStackerMin {\n    function credit(address trader, uint256 imdAmount) external returns (uint256 queued);\n    function VAULT() external view returns (address);\n    function RECEIVER() external view returns (address);\n}\n\n/// @title RemoteTrialVenue\n/// @notice The positive case for the imd/acc ProjectRegistry trial on Robinhood Chain: the Sepolia\n/// trials' TrialVenue, crediting through the RemoteStacker instead of the Stacker. A small\n/// constant-product pool between IMD and its own token, TRIAL (this contract), whose liquidity can\n/// never be withdrawn by anyone. Every trade pays a 1% fee on its IMD side: 0.5% is the trader's\n/// cashback, credited through the RemoteStacker (where it waits for a flush to Ethereum and reaches\n/// the trader as staked IMD), and 0.5% is burned (sent to 0x...dEaD). Nothing goes to the owner,\n/// who can only seed the pool once.\n///\n/// The trader is the caller when it is a plain wallet, else the active caller its router reports\n/// through `msgSender()`; a caller that resolves to no valid trader gets no cashback, and that\n/// cashback is burned instead (never paid to a router). If `credit` fails, the trader is paid the\n/// cashback in plain IMD. The gas for `credit` is checked before the call.\ncontract RemoteTrialVenue {\n    string public constant name = \"imd/acc trial token\";\n    string public constant symbol = \"TRIAL\";\n    uint8 public constant decimals = 18;\n\n    uint256 public constant BPS = 10_000;\n    uint256 public constant FEE_BPS = 100; // 1% of each trade's IMD side\n    uint256 public constant CASHBACK_BPS = 50; // to the trader, as staked IMD\n    uint256 public constant BURN_BPS = 50; // burned\n    address public constant BURN = 0x000000000000000000000000000000000000dEaD;\n    uint256 public constant TRIAL_SUPPLY = 1_000_000e18;\n\n    IERC20Min public immutable IMD;\n    IRemoteStackerMin public immutable stacker;\n    /// @notice The Ethereum vault and receiver the RemoteStacker names, refused as traders.\n    address public immutable VAULT;\n    address public immutable RECEIVER;\n    /// @notice The only power the owner has: seeding the pool once.\n    address public immutable owner;\n    /// @notice Gas forwarded to `credit`, and the gas kept for the rest of the trade.\n    uint256 public immutable creditGas;\n    uint256 public immutable gasReserve;\n\n    uint256 public totalSupply;\n    mapping(address => uint256) public balanceOf;\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    uint256 public reserveImd;\n    uint256 public reserveTrial;\n    bool public seeded;\n    uint256 private _lock = 1;\n\n    event Transfer(address indexed from, address indexed to, uint256 amount);\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\n    event Seeded(uint256 imd, uint256 trial);\n    event Trade(\n        address indexed caller,\n        address indexed trader,\n        bool buy,\n        uint256 imd,\n        uint256 trial,\n        uint256 cashback,\n        uint256 burned\n    );\n\n    error NotOwner();\n    error AlreadySeeded();\n    error NotSeeded();\n    error Slippage();\n    error ZeroAmount();\n    error Reentrant();\n\n    modifier nonReentrant() {\n        if (_lock != 1) revert Reentrant();\n        _lock = 2;\n        _;\n        _lock = 1;\n    }\n\n    constructor(\n        IERC20Min imd,\n        IRemoteStackerMin stacker_,\n        uint256 creditGas_,\n        uint256 gasReserve_\n    ) {\n        IMD = imd;\n        stacker = stacker_;\n        VAULT = stacker_.VAULT();\n        RECEIVER = stacker_.RECEIVER();\n        owner = msg.sender;\n        creditGas = creditGas_;\n        gasReserve = gasReserve_;\n        imd.approve(address(stacker_), type(uint256).max);\n        totalSupply = TRIAL_SUPPLY;\n        balanceOf[address(this)] = TRIAL_SUPPLY;\n        emit Transfer(address(0), address(this), TRIAL_SUPPLY);\n    }\n\n    // ------------------------------------------------------------------ pool\n\n    /// @notice Locks `imdAmount` IMD and the whole TRIAL supply into the pool, once. There is no way\n    /// to take liquidity out.\n    function seed(uint256 imdAmount) external {\n        if (msg.sender != owner) revert NotOwner();\n        if (seeded) revert AlreadySeeded();\n        if (imdAmount == 0) revert ZeroAmount();\n        seeded = true;\n        require(IMD.transferFrom(msg.sender, address(this), imdAmount));\n        reserveImd = imdAmount;\n        reserveTrial = TRIAL_SUPPLY;\n        emit Seeded(imdAmount, TRIAL_SUPPLY);\n    }\n\n    /// @notice Pay `imdIn` IMD for TRIAL. 1% of `imdIn` is the fee: half cashback, half burned.\n    function buy(uint256 imdIn, uint256 minTrialOut)\n        external\n        nonReentrant\n        returns (uint256 trialOut)\n    {\n        if (!seeded) revert NotSeeded();\n        if (imdIn == 0) revert ZeroAmount();\n        require(IMD.transferFrom(msg.sender, address(this), imdIn));\n        uint256 fee = imdIn * FEE_BPS / BPS;\n        uint256 net = imdIn - fee;\n        trialOut = reserveTrial * net / (reserveImd + net);\n        if (trialOut == 0 || trialOut < minTrialOut) revert Slippage();\n        reserveImd += net;\n        reserveTrial -= trialOut;\n        _move(address(this), msg.sender, trialOut);\n        _settleFee(imdIn, fee, true, trialOut);\n    }\n\n    /// @notice Sell `trialIn` TRIAL for IMD. 1% of the IMD paid out is the fee: half cashback, half\n    /// burned.\n    function sell(uint256 trialIn, uint256 minImdOut)\n        external\n        nonReentrant\n        returns (uint256 imdOut)\n    {\n        if (!seeded) revert NotSeeded();\n        if (trialIn == 0) revert ZeroAmount();\n        _move(msg.sender, address(this), trialIn);\n        uint256 gross = reserveImd * trialIn / (reserveTrial + trialIn);\n        uint256 fee = gross * FEE_BPS / BPS;\n        imdOut = gross - fee;\n        if (imdOut == 0 || imdOut < minImdOut) revert Slippage();\n        reserveImd -= gross;\n        reserveTrial += trialIn;\n        require(IMD.transfer(msg.sender, imdOut));\n        _settleFee(gross, fee, false, trialIn);\n    }\n\n    /// @dev Splits a trade's fee: the cashback to the resolved trader, the rest burned.\n    function _settleFee(uint256 imd, uint256 fee, bool isBuy, uint256 trial) internal {\n        uint256 cashback = fee * CASHBACK_BPS / FEE_BPS;\n        uint256 burned = fee - cashback;\n        address trader = resolveTrader(msg.sender);\n        if (trader == address(0)) {\n            burned += cashback; // no valid trader: the cashback is burned, never paid to a router\n            cashback = 0;\n        }\n        if (burned > 0) require(IMD.transfer(BURN, burned));\n        if (cashback > 0) {\n            require(gasleft() >= creditGas + gasReserve, \"imd/acc: insufficient gas\");\n            try stacker.credit{gas: creditGas}(trader, cashback) {}\n            catch {\n                require(IMD.transfer(trader, cashback)); // plain IMD: the trade never reverts\n            }\n        }\n        emit Trade(msg.sender, trader, isBuy, imd, trial, cashback, burned);\n    }\n\n    /// @notice The trader of a trade made by `who`: `who` itself when it has no code, else\n    /// the active caller its router reports through `msgSender()` (bounded gas, at most 32 bytes\n    /// read). Zero when no valid trader can be resolved.\n    function resolveTrader(address who) public view returns (address trader) {\n        if (who.code.length == 0) {\n            trader = who;\n        } else {\n            bool ok;\n            uint256 size;\n            uint256 value;\n            assembly (\"memory-safe\") {\n                mstore(0, 0xd737d0c700000000000000000000000000000000000000000000000000000000) // msgSender()\n                ok := staticcall(30000, who, 0, 4, 0, 32)\n                size := returndatasize()\n                value := mload(0)\n            }\n            if (!ok || size != 32 || value > type(uint160).max) return address(0);\n            trader = address(uint160(value));\n        }\n        if (\n            trader == address(0) || trader == address(stacker) || trader == address(IMD)\n                || trader == VAULT || trader == RECEIVER || trader == address(this)\n                || (trader == who && who.code.length != 0)\n        ) return address(0);\n    }\n\n    // ------------------------------------------------------------------ TRIAL token\n\n    function transfer(address to, uint256 amount) external returns (bool) {\n        _move(msg.sender, to, amount);\n        return true;\n    }\n\n    function approve(address spender, uint256 amount) external returns (bool) {\n        allowance[msg.sender][spender] = amount;\n        emit Approval(msg.sender, spender, amount);\n        return true;\n    }\n\n    function transferFrom(address from, address to, uint256 amount) external returns (bool) {\n        uint256 a = allowance[from][msg.sender];\n        if (a != type(uint256).max) allowance[from][msg.sender] = a - amount;\n        _move(from, to, amount);\n        return true;\n    }\n\n    function _move(address from, address to, uint256 amount) internal {\n        balanceOf[from] -= amount;\n        balanceOf[to] += amount;\n        emit Transfer(from, to, amount);\n    }\n}\n"}},"compilation":{"language":"Solidity","compiler":"solc","compilerVersion":"0.8.26+commit.8a97fa7a","compilerSettings":{"viaIR":false,"metadata":{"appendCBOR":true,"bytecodeHash":"none","useLiteralContent":false},"libraries":{},"optimizer":{"runs":10000,"enabled":true},"evmVersion":"cancun","remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/"]},"name":"RemoteTrialVenue","fullyQualifiedName":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},"abi":[{"type":"constructor","inputs":[{"name":"imd","type":"address","internalType":"contract IERC20Min"},{"name":"stacker_","type":"address","internalType":"contract IRemoteStackerMin"},{"name":"creditGas_","type":"uint256","internalType":"uint256"},{"name":"gasReserve_","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"name":"AlreadySeeded","type":"error","inputs":[]},{"name":"NotOwner","type":"error","inputs":[]},{"name":"NotSeeded","type":"error","inputs":[]},{"name":"Reentrant","type":"error","inputs":[]},{"name":"Slippage","type":"error","inputs":[]},{"name":"ZeroAmount","type":"error","inputs":[]},{"name":"Approval","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Seeded","type":"event","inputs":[{"name":"imd","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trial","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Trade","type":"event","inputs":[{"name":"caller","type":"address","indexed":true,"internalType":"address"},{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"buy","type":"bool","indexed":false,"internalType":"bool"},{"name":"imd","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trial","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"cashback","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"burned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Transfer","type":"event","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"BURN","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"BURN_BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"CASHBACK_BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"FEE_BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"IMD","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20Min"}],"stateMutability":"view"},{"name":"RECEIVER","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"TRIAL_SUPPLY","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"VAULT","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"allowance","type":"function","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"approve","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"balanceOf","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"buy","type":"function","inputs":[{"name":"imdIn","type":"uint256","internalType":"uint256"},{"name":"minTrialOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trialOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"name":"creditGas","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"decimals","type":"function","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"name":"gasReserve","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"owner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"reserveImd","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"reserveTrial","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"resolveTrader","type":"function","inputs":[{"name":"who","type":"address","internalType":"address"}],"outputs":[{"name":"trader","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"seed","type":"function","inputs":[{"name":"imdAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"seeded","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"sell","type":"function","inputs":[{"name":"trialIn","type":"uint256","internalType":"uint256"},{"name":"minImdOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"imdOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"name":"stacker","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRemoteStackerMin"}],"stateMutability":"view"},{"name":"symbol","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"totalSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"transfer","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferFrom","type":"function","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}],"metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20Min","name":"imd","type":"address"},{"internalType":"contract IRemoteStackerMin","name":"stacker_","type":"address"},{"internalType":"uint256","name":"creditGas_","type":"uint256"},{"internalType":"uint256","name":"gasReserve_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadySeeded","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSeeded","type":"error"},{"inputs":[],"name":"Reentrant","type":"error"},{"inputs":[],"name":"Slippage","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"imd","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"trial","type":"uint256"}],"name":"Seeded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"bool","name":"buy","type":"bool"},{"indexed":false,"internalType":"uint256","name":"imd","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"trial","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"cashback","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burned","type":"uint256"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURN_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CASHBACK_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"IMD","outputs":[{"internalType":"contract IERC20Min","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RECEIVER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRIAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VAULT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"imdIn","type":"uint256"},{"internalType":"uint256","name":"minTrialOut","type":"uint256"}],"name":"buy","outputs":[{"internalType":"uint256","name":"trialOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creditGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveImd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveTrial","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"resolveTrader","outputs":[{"internalType":"address","name":"trader","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"imdAmount","type":"uint256"}],"name":"seed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"seeded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"trialIn","type":"uint256"},{"internalType":"uint256","name":"minImdOut","type":"uint256"}],"name":"sell","outputs":[{"internalType":"uint256","name":"imdOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stacker","outputs":[{"internalType":"contract IRemoteStackerMin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"title":"RemoteTrialVenue","version":1},"userdoc":{"kind":"user","methods":{"VAULT()":{"notice":"The Ethereum vault and receiver the RemoteStacker names, refused as traders."},"buy(uint256,uint256)":{"notice":"Pay `imdIn` IMD for TRIAL. 1% of `imdIn` is the fee: half cashback, half burned."},"creditGas()":{"notice":"Gas forwarded to `credit`, and the gas kept for the rest of the trade."},"owner()":{"notice":"The only power the owner has: seeding the pool once."},"resolveTrader(address)":{"notice":"The trader of a trade made by `who`: `who` itself when it has no code, else the active caller its router reports through `msgSender()` (bounded gas, at most 32 bytes read). Zero when no valid trader can be resolved."},"seed(uint256)":{"notice":"Locks `imdAmount` IMD and the whole TRIAL supply into the pool, once. There is no way to take liquidity out."},"sell(uint256,uint256)":{"notice":"Sell `trialIn` TRIAL for IMD. 1% of the IMD paid out is the fee: half cashback, half burned."}},"notice":"The positive case for the imd/acc ProjectRegistry trial on Robinhood Chain: the Sepolia trials' TrialVenue, crediting through the RemoteStacker instead of the Stacker. A small constant-product pool between IMD and its own token, TRIAL (this contract), whose liquidity can never be withdrawn by anyone. Every trade pays a 1% fee on its IMD side: 0.5% is the trader's cashback, credited through the RemoteStacker (where it waits for a flush to Ethereum and reaches the trader as staked IMD), and 0.5% is burned (sent to 0x...dEaD). Nothing goes to the owner, who can only seed the pool once. The trader is the caller when it is a plain wallet, else the active caller its router reports through `msgSender()`; a caller that resolves to no valid trader gets no cashback, and that cashback is burned instead (never paid to a router). If `credit` fails, the trader is paid the cashback in plain IMD. The gas for `credit` is checked before the call.","version":1}},"settings":{"compilationTarget":{"test/trial/RemoteTrialVenue.sol":"RemoteTrialVenue"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"none"},"optimizer":{"enabled":true,"runs":10000},"remappings":[":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",":forge-std/=lib/forge-std/src/",":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",":solady/=lib/solady/src/"]},"sources":{"test/trial/RemoteTrialVenue.sol":{"keccak256":"0xbf0ddfc14119dda432d93807c79287dc54648f7dd4ce5d8ba6b7617d07b4e32d","license":"MIT","urls":["bzz-raw://13f41d4d76c2b81997b30a434982b31d4746da3c9b6b1eb8200b6e521a4a54e1","dweb:/ipfs/QmTm9iLF1Y55Z1NfFSPhN4VhAgWhw6FBYwtTT8X5fb9ALc"]}},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"key":"t_address","label":"mapping(address => uint256)","value":"t_uint256","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"key":"t_address","label":"mapping(address => mapping(address => uint256))","value":"t_mapping(t_address,t_uint256)","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_uint256","astId":100,"label":"totalSupply","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"1","type":"t_mapping(t_address,t_uint256)","astId":104,"label":"balanceOf","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))","astId":110,"label":"allowance","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"3","type":"t_uint256","astId":112,"label":"reserveImd","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"4","type":"t_uint256","astId":114,"label":"reserveTrial","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"5","type":"t_bool","astId":116,"label":"seeded","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"6","type":"t_uint256","astId":119,"label":"_lock","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"}]},"transientStorageLayout":null,"userdoc":{"kind":"user","notice":"The positive case for the imd/acc ProjectRegistry trial on Robinhood Chain: the Sepolia trials' TrialVenue, crediting through the RemoteStacker instead of the Stacker. A small constant-product pool between IMD and its own token, TRIAL (this contract), whose liquidity can never be withdrawn by anyone. Every trade pays a 1% fee on its IMD side: 0.5% is the trader's cashback, credited through the RemoteStacker (where it waits for a flush to Ethereum and reaches the trader as staked IMD), and 0.5% is burned (sent to 0x...dEaD). Nothing goes to the owner, who can only seed the pool once. The trader is the caller when it is a plain wallet, else the active caller its router reports through `msgSender()`; a caller that resolves to no valid trader gets no cashback, and that cashback is burned instead (never paid to a router). If `credit` fails, the trader is paid the cashback in plain IMD. The gas for `credit` is checked before the call.","methods":{"VAULT()":{"notice":"The Ethereum vault and receiver the RemoteStacker names, refused as traders."},"owner()":{"notice":"The only power the owner has: seeding the pool once."},"creditGas()":{"notice":"Gas forwarded to `credit`, and the gas kept for the rest of the trade."},"seed(uint256)":{"notice":"Locks `imdAmount` IMD and the whole TRIAL supply into the pool, once. There is no way to take liquidity out."},"buy(uint256,uint256)":{"notice":"Pay `imdIn` IMD for TRIAL. 1% of `imdIn` is the fee: half cashback, half burned."},"sell(uint256,uint256)":{"notice":"Sell `trialIn` TRIAL for IMD. 1% of the IMD paid out is the fee: half cashback, half burned."},"resolveTrader(address)":{"notice":"The trader of a trade made by `who`: `who` itself when it has no code, else the active caller its router reports through `msgSender()` (bounded gas, at most 32 bytes read). Zero when no valid trader can be resolved."}},"version":1},"devdoc":{"kind":"dev","title":"RemoteTrialVenue","methods":{},"version":1},"sourceIds":{"test/trial/RemoteTrialVenue.sol":{"id":0}},"additionalInput":null,"stdJsonInput":{"sources":{"test/trial/RemoteTrialVenue.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\ninterface IERC20Min {\n    function transfer(address to, uint256 amount) external returns (bool);\n    function transferFrom(address from, address to, uint256 amount) external returns (bool);\n    function approve(address spender, uint256 amount) external returns (bool);\n}\n\ninterface IRemoteStackerMin {\n    function credit(address trader, uint256 imdAmount) external returns (uint256 queued);\n    function VAULT() external view returns (address);\n    function RECEIVER() external view returns (address);\n}\n\n/// @title RemoteTrialVenue\n/// @notice The positive case for the imd/acc ProjectRegistry trial on Robinhood Chain: the Sepolia\n/// trials' TrialVenue, crediting through the RemoteStacker instead of the Stacker. A small\n/// constant-product pool between IMD and its own token, TRIAL (this contract), whose liquidity can\n/// never be withdrawn by anyone. Every trade pays a 1% fee on its IMD side: 0.5% is the trader's\n/// cashback, credited through the RemoteStacker (where it waits for a flush to Ethereum and reaches\n/// the trader as staked IMD), and 0.5% is burned (sent to 0x...dEaD). Nothing goes to the owner,\n/// who can only seed the pool once.\n///\n/// The trader is the caller when it is a plain wallet, else the active caller its router reports\n/// through `msgSender()`; a caller that resolves to no valid trader gets no cashback, and that\n/// cashback is burned instead (never paid to a router). If `credit` fails, the trader is paid the\n/// cashback in plain IMD. The gas for `credit` is checked before the call.\ncontract RemoteTrialVenue {\n    string public constant name = \"imd/acc trial token\";\n    string public constant symbol = \"TRIAL\";\n    uint8 public constant decimals = 18;\n\n    uint256 public constant BPS = 10_000;\n    uint256 public constant FEE_BPS = 100; // 1% of each trade's IMD side\n    uint256 public constant CASHBACK_BPS = 50; // to the trader, as staked IMD\n    uint256 public constant BURN_BPS = 50; // burned\n    address public constant BURN = 0x000000000000000000000000000000000000dEaD;\n    uint256 public constant TRIAL_SUPPLY = 1_000_000e18;\n\n    IERC20Min public immutable IMD;\n    IRemoteStackerMin public immutable stacker;\n    /// @notice The Ethereum vault and receiver the RemoteStacker names, refused as traders.\n    address public immutable VAULT;\n    address public immutable RECEIVER;\n    /// @notice The only power the owner has: seeding the pool once.\n    address public immutable owner;\n    /// @notice Gas forwarded to `credit`, and the gas kept for the rest of the trade.\n    uint256 public immutable creditGas;\n    uint256 public immutable gasReserve;\n\n    uint256 public totalSupply;\n    mapping(address => uint256) public balanceOf;\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    uint256 public reserveImd;\n    uint256 public reserveTrial;\n    bool public seeded;\n    uint256 private _lock = 1;\n\n    event Transfer(address indexed from, address indexed to, uint256 amount);\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\n    event Seeded(uint256 imd, uint256 trial);\n    event Trade(\n        address indexed caller,\n        address indexed trader,\n        bool buy,\n        uint256 imd,\n        uint256 trial,\n        uint256 cashback,\n        uint256 burned\n    );\n\n    error NotOwner();\n    error AlreadySeeded();\n    error NotSeeded();\n    error Slippage();\n    error ZeroAmount();\n    error Reentrant();\n\n    modifier nonReentrant() {\n        if (_lock != 1) revert Reentrant();\n        _lock = 2;\n        _;\n        _lock = 1;\n    }\n\n    constructor(\n        IERC20Min imd,\n        IRemoteStackerMin stacker_,\n        uint256 creditGas_,\n        uint256 gasReserve_\n    ) {\n        IMD = imd;\n        stacker = stacker_;\n        VAULT = stacker_.VAULT();\n        RECEIVER = stacker_.RECEIVER();\n        owner = msg.sender;\n        creditGas = creditGas_;\n        gasReserve = gasReserve_;\n        imd.approve(address(stacker_), type(uint256).max);\n        totalSupply = TRIAL_SUPPLY;\n        balanceOf[address(this)] = TRIAL_SUPPLY;\n        emit Transfer(address(0), address(this), TRIAL_SUPPLY);\n    }\n\n    // ------------------------------------------------------------------ pool\n\n    /// @notice Locks `imdAmount` IMD and the whole TRIAL supply into the pool, once. There is no way\n    /// to take liquidity out.\n    function seed(uint256 imdAmount) external {\n        if (msg.sender != owner) revert NotOwner();\n        if (seeded) revert AlreadySeeded();\n        if (imdAmount == 0) revert ZeroAmount();\n        seeded = true;\n        require(IMD.transferFrom(msg.sender, address(this), imdAmount));\n        reserveImd = imdAmount;\n        reserveTrial = TRIAL_SUPPLY;\n        emit Seeded(imdAmount, TRIAL_SUPPLY);\n    }\n\n    /// @notice Pay `imdIn` IMD for TRIAL. 1% of `imdIn` is the fee: half cashback, half burned.\n    function buy(uint256 imdIn, uint256 minTrialOut)\n        external\n        nonReentrant\n        returns (uint256 trialOut)\n    {\n        if (!seeded) revert NotSeeded();\n        if (imdIn == 0) revert ZeroAmount();\n        require(IMD.transferFrom(msg.sender, address(this), imdIn));\n        uint256 fee = imdIn * FEE_BPS / BPS;\n        uint256 net = imdIn - fee;\n        trialOut = reserveTrial * net / (reserveImd + net);\n        if (trialOut == 0 || trialOut < minTrialOut) revert Slippage();\n        reserveImd += net;\n        reserveTrial -= trialOut;\n        _move(address(this), msg.sender, trialOut);\n        _settleFee(imdIn, fee, true, trialOut);\n    }\n\n    /// @notice Sell `trialIn` TRIAL for IMD. 1% of the IMD paid out is the fee: half cashback, half\n    /// burned.\n    function sell(uint256 trialIn, uint256 minImdOut)\n        external\n        nonReentrant\n        returns (uint256 imdOut)\n    {\n        if (!seeded) revert NotSeeded();\n        if (trialIn == 0) revert ZeroAmount();\n        _move(msg.sender, address(this), trialIn);\n        uint256 gross = reserveImd * trialIn / (reserveTrial + trialIn);\n        uint256 fee = gross * FEE_BPS / BPS;\n        imdOut = gross - fee;\n        if (imdOut == 0 || imdOut < minImdOut) revert Slippage();\n        reserveImd -= gross;\n        reserveTrial += trialIn;\n        require(IMD.transfer(msg.sender, imdOut));\n        _settleFee(gross, fee, false, trialIn);\n    }\n\n    /// @dev Splits a trade's fee: the cashback to the resolved trader, the rest burned.\n    function _settleFee(uint256 imd, uint256 fee, bool isBuy, uint256 trial) internal {\n        uint256 cashback = fee * CASHBACK_BPS / FEE_BPS;\n        uint256 burned = fee - cashback;\n        address trader = resolveTrader(msg.sender);\n        if (trader == address(0)) {\n            burned += cashback; // no valid trader: the cashback is burned, never paid to a router\n            cashback = 0;\n        }\n        if (burned > 0) require(IMD.transfer(BURN, burned));\n        if (cashback > 0) {\n            require(gasleft() >= creditGas + gasReserve, \"imd/acc: insufficient gas\");\n            try stacker.credit{gas: creditGas}(trader, cashback) {}\n            catch {\n                require(IMD.transfer(trader, cashback)); // plain IMD: the trade never reverts\n            }\n        }\n        emit Trade(msg.sender, trader, isBuy, imd, trial, cashback, burned);\n    }\n\n    /// @notice The trader of a trade made by `who`: `who` itself when it has no code, else\n    /// the active caller its router reports through `msgSender()` (bounded gas, at most 32 bytes\n    /// read). Zero when no valid trader can be resolved.\n    function resolveTrader(address who) public view returns (address trader) {\n        if (who.code.length == 0) {\n            trader = who;\n        } else {\n            bool ok;\n            uint256 size;\n            uint256 value;\n            assembly (\"memory-safe\") {\n                mstore(0, 0xd737d0c700000000000000000000000000000000000000000000000000000000) // msgSender()\n                ok := staticcall(30000, who, 0, 4, 0, 32)\n                size := returndatasize()\n                value := mload(0)\n            }\n            if (!ok || size != 32 || value > type(uint160).max) return address(0);\n            trader = address(uint160(value));\n        }\n        if (\n            trader == address(0) || trader == address(stacker) || trader == address(IMD)\n                || trader == VAULT || trader == RECEIVER || trader == address(this)\n                || (trader == who && who.code.length != 0)\n        ) return address(0);\n    }\n\n    // ------------------------------------------------------------------ TRIAL token\n\n    function transfer(address to, uint256 amount) external returns (bool) {\n        _move(msg.sender, to, amount);\n        return true;\n    }\n\n    function approve(address spender, uint256 amount) external returns (bool) {\n        allowance[msg.sender][spender] = amount;\n        emit Approval(msg.sender, spender, amount);\n        return true;\n    }\n\n    function transferFrom(address from, address to, uint256 amount) external returns (bool) {\n        uint256 a = allowance[from][msg.sender];\n        if (a != type(uint256).max) allowance[from][msg.sender] = a - amount;\n        _move(from, to, amount);\n        return true;\n    }\n\n    function _move(address from, address to, uint256 amount) internal {\n        balanceOf[from] -= amount;\n        balanceOf[to] += amount;\n        emit Transfer(from, to, amount);\n    }\n}\n"}},"language":"Solidity","settings":{"viaIR":false,"metadata":{"appendCBOR":true,"bytecodeHash":"none","useLiteralContent":false},"libraries":{},"optimizer":{"runs":10000,"enabled":true},"evmVersion":"cancun","remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/"]}},"stdJsonOutput":{"sources":{"test/trial/RemoteTrialVenue.sol":{"id":0}},"contracts":{"test/trial/RemoteTrialVenue.sol":{"RemoteTrialVenue":{"abi":[{"type":"constructor","inputs":[{"name":"imd","type":"address","internalType":"contract IERC20Min"},{"name":"stacker_","type":"address","internalType":"contract IRemoteStackerMin"},{"name":"creditGas_","type":"uint256","internalType":"uint256"},{"name":"gasReserve_","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"name":"AlreadySeeded","type":"error","inputs":[]},{"name":"NotOwner","type":"error","inputs":[]},{"name":"NotSeeded","type":"error","inputs":[]},{"name":"Reentrant","type":"error","inputs":[]},{"name":"Slippage","type":"error","inputs":[]},{"name":"ZeroAmount","type":"error","inputs":[]},{"name":"Approval","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Seeded","type":"event","inputs":[{"name":"imd","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trial","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Trade","type":"event","inputs":[{"name":"caller","type":"address","indexed":true,"internalType":"address"},{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"buy","type":"bool","indexed":false,"internalType":"bool"},{"name":"imd","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trial","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"cashback","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"burned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Transfer","type":"event","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"BURN","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"BURN_BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"CASHBACK_BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"FEE_BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"IMD","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20Min"}],"stateMutability":"view"},{"name":"RECEIVER","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"TRIAL_SUPPLY","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"VAULT","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"allowance","type":"function","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"approve","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"balanceOf","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"buy","type":"function","inputs":[{"name":"imdIn","type":"uint256","internalType":"uint256"},{"name":"minTrialOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trialOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"name":"creditGas","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"decimals","type":"function","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"name":"gasReserve","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"owner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"reserveImd","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"reserveTrial","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"resolveTrader","type":"function","inputs":[{"name":"who","type":"address","internalType":"address"}],"outputs":[{"name":"trader","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"seed","type":"function","inputs":[{"name":"imdAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"seeded","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"sell","type":"function","inputs":[{"name":"trialIn","type":"uint256","internalType":"uint256"},{"name":"minImdOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"imdOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"name":"stacker","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRemoteStackerMin"}],"stateMutability":"view"},{"name":"symbol","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"totalSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"transfer","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferFrom","type":"function","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20Min\",\"name\":\"imd\",\"type\":\"address\"},{\"internalType\":\"contract IRemoteStackerMin\",\"name\":\"stacker_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditGas_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasReserve_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadySeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrant\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Slippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"imd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"trial\",\"type\":\"uint256\"}],\"name\":\"Seeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"imd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"trial\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashback\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burned\",\"type\":\"uint256\"}],\"name\":\"Trade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURN_BPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CASHBACK_BPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FEE_BPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMD\",\"outputs\":[{\"internalType\":\"contract IERC20Min\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RECEIVER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRIAL_SUPPLY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"imdIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTrialOut\",\"type\":\"uint256\"}],\"name\":\"buy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"trialOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"creditGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasReserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reserveImd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reserveTrial\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"resolveTrader\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"imdAmount\",\"type\":\"uint256\"}],\"name\":\"seed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"seeded\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"trialIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minImdOut\",\"type\":\"uint256\"}],\"name\":\"sell\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"imdOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stacker\",\"outputs\":[{\"internalType\":\"contract IRemoteStackerMin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"RemoteTrialVenue\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"VAULT()\":{\"notice\":\"The Ethereum vault and receiver the RemoteStacker names, refused as traders.\"},\"buy(uint256,uint256)\":{\"notice\":\"Pay `imdIn` IMD for TRIAL. 1% of `imdIn` is the fee: half cashback, half burned.\"},\"creditGas()\":{\"notice\":\"Gas forwarded to `credit`, and the gas kept for the rest of the trade.\"},\"owner()\":{\"notice\":\"The only power the owner has: seeding the pool once.\"},\"resolveTrader(address)\":{\"notice\":\"The trader of a trade made by `who`: `who` itself when it has no code, else the active caller its router reports through `msgSender()` (bounded gas, at most 32 bytes read). Zero when no valid trader can be resolved.\"},\"seed(uint256)\":{\"notice\":\"Locks `imdAmount` IMD and the whole TRIAL supply into the pool, once. There is no way to take liquidity out.\"},\"sell(uint256,uint256)\":{\"notice\":\"Sell `trialIn` TRIAL for IMD. 1% of the IMD paid out is the fee: half cashback, half burned.\"}},\"notice\":\"The positive case for the imd/acc ProjectRegistry trial on Robinhood Chain: the Sepolia trials' TrialVenue, crediting through the RemoteStacker instead of the Stacker. A small constant-product pool between IMD and its own token, TRIAL (this contract), whose liquidity can never be withdrawn by anyone. Every trade pays a 1% fee on its IMD side: 0.5% is the trader's cashback, credited through the RemoteStacker (where it waits for a flush to Ethereum and reaches the trader as staked IMD), and 0.5% is burned (sent to 0x...dEaD). Nothing goes to the owner, who can only seed the pool once. The trader is the caller when it is a plain wallet, else the active caller its router reports through `msgSender()`; a caller that resolves to no valid trader gets no cashback, and that cashback is burned instead (never paid to a router). If `credit` fails, the trader is paid the cashback in plain IMD. The gas for `credit` is checked before the call.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/trial/RemoteTrialVenue.sol\":\"RemoteTrialVenue\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"test/trial/RemoteTrialVenue.sol\":{\"keccak256\":\"0xbf0ddfc14119dda432d93807c79287dc54648f7dd4ce5d8ba6b7617d07b4e32d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13f41d4d76c2b81997b30a434982b31d4746da3c9b6b1eb8200b6e521a4a54e1\",\"dweb:/ipfs/QmTm9iLF1Y55Z1NfFSPhN4VhAgWhw6FBYwtTT8X5fb9ALc\"]}},\"version\":1}","userdoc":{"kind":"user","notice":"The positive case for the imd/acc ProjectRegistry trial on Robinhood Chain: the Sepolia trials' TrialVenue, crediting through the RemoteStacker instead of the Stacker. A small constant-product pool between IMD and its own token, TRIAL (this contract), whose liquidity can never be withdrawn by anyone. Every trade pays a 1% fee on its IMD side: 0.5% is the trader's cashback, credited through the RemoteStacker (where it waits for a flush to Ethereum and reaches the trader as staked IMD), and 0.5% is burned (sent to 0x...dEaD). Nothing goes to the owner, who can only seed the pool once. The trader is the caller when it is a plain wallet, else the active caller its router reports through `msgSender()`; a caller that resolves to no valid trader gets no cashback, and that cashback is burned instead (never paid to a router). If `credit` fails, the trader is paid the cashback in plain IMD. The gas for `credit` is checked before the call.","methods":{"VAULT()":{"notice":"The Ethereum vault and receiver the RemoteStacker names, refused as traders."},"owner()":{"notice":"The only power the owner has: seeding the pool once."},"creditGas()":{"notice":"Gas forwarded to `credit`, and the gas kept for the rest of the trade."},"seed(uint256)":{"notice":"Locks `imdAmount` IMD and the whole TRIAL supply into the pool, once. There is no way to take liquidity out."},"buy(uint256,uint256)":{"notice":"Pay `imdIn` IMD for TRIAL. 1% of `imdIn` is the fee: half cashback, half burned."},"sell(uint256,uint256)":{"notice":"Sell `trialIn` TRIAL for IMD. 1% of the IMD paid out is the fee: half cashback, half burned."},"resolveTrader(address)":{"notice":"The trader of a trade made by `who`: `who` itself when it has no code, else the active caller its router reports through `msgSender()` (bounded gas, at most 32 bytes read). Zero when no valid trader can be resolved."}},"version":1},"devdoc":{"kind":"dev","title":"RemoteTrialVenue","methods":{},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"key":"t_address","label":"mapping(address => uint256)","value":"t_uint256","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"key":"t_address","label":"mapping(address => mapping(address => uint256))","value":"t_mapping(t_address,t_uint256)","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_uint256","astId":100,"label":"totalSupply","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"1","type":"t_mapping(t_address,t_uint256)","astId":104,"label":"balanceOf","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))","astId":110,"label":"allowance","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"3","type":"t_uint256","astId":112,"label":"reserveImd","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"4","type":"t_uint256","astId":114,"label":"reserveTrial","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"5","type":"t_bool","astId":116,"label":"seeded","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"},{"slot":"6","type":"t_uint256","astId":119,"label":"_lock","offset":0,"contract":"test/trial/RemoteTrialVenue.sol:RemoteTrialVenue"}]},"transientStorageLayout":null,"evm":{"bytecode":{"object":"6101606040526001600655348015610015575f80fd5b50604051611a15380380611a1583398101604081905261003491610221565b6001600160a01b03808516608052831660a08190526040805163411557d160e01b8152905163411557d1916004808201926020929091908290030181865afa158015610082573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a69190610266565b6001600160a01b031660c0816001600160a01b031681525050826001600160a01b031663ad7430cc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011f9190610266565b6001600160a01b0390811660e052336101005261012083905261014082905260405163095ea7b360e01b815284821660048201525f1960248201529085169063095ea7b3906044016020604051808303815f875af1158015610183573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a79190610288565b5069d3c21bcecceda10000005f81815530808252600160205260408083208490555190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916101f991815260200190565b60405180910390a3505050506102a7565b6001600160a01b038116811461021e575f80fd5b50565b5f805f8060808587031215610234575f80fd5b845161023f8161020a565b60208601519094506102508161020a565b6040860151606090960151949790965092505050565b5f60208284031215610276575f80fd5b81516102818161020a565b9392505050565b5f60208284031215610298575f80fd5b81518015158114610281575f80fd5b60805160a05160c05160e0516101005161012051610140516116bb61035a5f395f81816104ca015261119601525f8181610328015281816111b701526112bd01525f818161034f01526108bd01525f81816103eb01526106ae01525f81816102da015261065801525f81816104a3015281816105ac015261129401525f81816104230152818161060201528181610a0501528181610bd001528181610ef601528181611104015261138901526116bb5ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063931b95bb116100fe578063c0a2526c1161009e578063dd62ed3e1161006e578063dd62ed3e1461046b578063e2417e1a14610495578063e6fd6bd51461049e578063eea7570e146104c5575f80fd5b8063c0a2526c14610415578063d0abb6931461041e578063d6febde814610445578063d79875eb14610458575f80fd5b8063a37a9fc0116100d9578063a37a9fc0146102fc578063a9059cbb146103d3578063ad7430cc146103e6578063bf333f2c1461040d575f80fd5b8063931b95bb14610371578063955648371461038257806395d89b4114610397575f80fd5b8063313ce5671161016957806359cf0f001161014457806359cf0f00146102fc57806370a082311461030457806386cb90be146103235780638da5cb5b1461034a575f80fd5b8063313ce567146102ae578063334041a6146102c8578063411557d1146102d5575f80fd5b8063095ea7b3116101a4578063095ea7b31461026757806318160ddd1461028a57806323b872dd14610292578063249d39e9146102a5575f80fd5b806304ccc04d146101ca57806306fdde0314610207578063090b76c314610250575b5f80fd5b6101dd6101d8366004611499565b6104ec565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102436040518060400160405280601381526020017f696d642f61636320747269616c20746f6b656e0000000000000000000000000081525081565b6040516101fe91906114b9565b61025960045481565b6040519081526020016101fe565b61027a61027536600461150c565b610784565b60405190151581526020016101fe565b6102595f5481565b61027a6102a0366004611534565b6107fd565b61025961271081565b6102b6601281565b60405160ff90911681526020016101fe565b60055461027a9060ff1681565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259603281565b610259610312366004611499565b60016020525f908152604090205481565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b61025969d3c21bcecceda100000081565b61039561039036600461156e565b6108a5565b005b6102436040518060400160405280600581526020017f545249414c00000000000000000000000000000000000000000000000000000081525081565b61027a6103e136600461150c565b610ac9565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259606481565b6101dd61dead81565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259610453366004611585565b610ade565b610259610466366004611585565b610d3e565b6102596104793660046115a5565b600260209081525f928352604080842090915290825290205481565b61025960035481565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b5f8173ffffffffffffffffffffffffffffffffffffffff163b5f0361051257508061058c565b5f805f7fd737d0c7000000000000000000000000000000000000000000000000000000005f5260205f60045f88617530fa92503d91505f51905082158061055a575081602014155b80610578575073ffffffffffffffffffffffffffffffffffffffff81115b1561058757505f949350505050565b925050505b73ffffffffffffffffffffffffffffffffffffffff811615806105fa57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061065057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106a657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106fc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061071c575073ffffffffffffffffffffffffffffffffffffffff811630145b8061077357508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610773575073ffffffffffffffffffffffffffffffffffffffff82163b15155b1561077f57505f919050565b919050565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107eb9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461088f5761085e8382611603565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b61089a858585610f89565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610914576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460ff1615610951576040517f4313f1c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f0361098a576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af1158015610a4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6f9190611616565b610a77575f80fd5b600381905569d3c21bcecceda100000060048190556040805183815260208101929092527f67f9b61bf7b39fd24dd60467083f89ea77979db358db2804069474590a36c035910160405180910390a150565b5f610ad5338484610f89565b50600192915050565b5f600654600114610b1b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610b5c576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610b95576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015610c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611616565b610c57575f80fd5b5f612710610c66606486611635565b610c70919061164c565b90505f610c7d8286611603565b905080600354610c8d9190611684565b81600454610c9b9190611635565b610ca5919061164c565b9250821580610cb357508383105b15610cea576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f828254610cfb9190611684565b925050819055508260045f828254610d139190611603565b90915550610d249050303385610f89565b610d318583600186611069565b5050600160065592915050565b5f600654600114610d7b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610dbc576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610df5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e00333085610f89565b5f83600454610e0f9190611684565b84600354610e1d9190611635565b610e27919061164c565b90505f612710610e38606484611635565b610e42919061164c565b9050610e4e8183611603565b9250821580610e5c57508383105b15610e93576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160035f828254610ea49190611603565b925050819055508460045f828254610ebc9190611684565b90915550506040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610f51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f759190611616565b610f7d575f80fd5b610d3182825f88611069565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290610fbd908490611603565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526001602052604081208054839290610ff6908490611684565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161105c91815260200190565b60405180910390a3505050565b5f6064611077603286611635565b611081919061164c565b90505f61108e8286611603565b90505f61109a336104ec565b905073ffffffffffffffffffffffffffffffffffffffff81166110c7576110c18383611684565b91505f92505b811561118b576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815261dead6004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561115f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190611616565b61118b575f80fd5b8215611402576111db7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611684565b5a1015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696d642f6163633a20696e73756666696369656e742067617300000000000000604482015260640160405180910390fd5b6040517fef6506db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063ef6506db907f0000000000000000000000000000000000000000000000000000000000000000906044016020604051808303815f8887f193505050508015611339575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261133691810190611697565b60015b611400576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156113cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f39190611616565b6113fb575f80fd5b611402565b505b60408051861515815260208101899052908101859052606081018490526080810183905273ffffffffffffffffffffffffffffffffffffffff82169033907f9adcf0ad0cda63c4d50f26a48925cf6405df27d422a39c456b5f03f661c829829060a00160405180910390a350505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077f575f80fd5b5f602082840312156114a9575f80fd5b6114b282611476565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f806040838503121561151d575f80fd5b61152683611476565b946020939093013593505050565b5f805f60608486031215611546575f80fd5b61154f84611476565b925061155d60208501611476565b929592945050506040919091013590565b5f6020828403121561157e575f80fd5b5035919050565b5f8060408385031215611596575f80fd5b50508035926020909101359150565b5f80604083850312156115b6575f80fd5b6115bf83611476565b91506115cd60208401611476565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107f7576107f76115d6565b5f60208284031215611626575f80fd5b815180151581146114b2575f80fd5b80820281158282048414176107f7576107f76115d6565b5f8261167f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156107f7576107f76115d6565b5f602082840312156116a7575f80fd5b505191905056fea164736f6c634300081a000a","sourceMap":"1590:7832:0:-:0;;;2942:1;2918:25;;3630:564;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3774:9:0;;;;;3793:18;;;;;;3829:16;;;-1:-1:-1;;;3829:16:0;;;;:14;;:16;;;;;;;;;;;;;;;3793:18;3829:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3821:24:0;;;-1:-1:-1;;;;;3821:24:0;;;;;3866:8;-1:-1:-1;;;;;3866:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3855:30:0;;;;;3903:10;3895:18;;3923:22;;;;3955:24;;;;3989:49;;-1:-1:-1;;;3989:49:0;;1299:32:1;;;3989:49:0;;;1281:51:1;-1:-1:-1;;1348:18:1;;;1341:34;3989:11:0;;;;;;1254:18:1;;3989:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2132:12:0;4048:11;:26;;;4102:4;4084:24;;;:9;:24;;;;;;:39;;;4138:49;4102:4;;4138:49;;;;1814:25:1;;1802:2;1787:18;;1668:177;4138:49:0;;;;;;;;3630:564;;;;1590:7832;;14:142:1;-1:-1:-1;;;;;100:31:1;;90:42;;80:70;;146:1;143;136:12;80:70;14:142;:::o;161:674::-;298:6;306;314;322;375:3;363:9;354:7;350:23;346:33;343:53;;;392:1;389;382:12;343:53;424:9;418:16;443:42;479:5;443:42;:::i;:::-;554:2;539:18;;533:25;504:5;;-1:-1:-1;567:44:1;533:25;567:44;:::i;:::-;703:2;688:18;;682:25;799:2;784:18;;;778:25;161:674;;630:7;;-1:-1:-1;161:674:1;-1:-1:-1;;;161:674:1:o;840:262::-;910:6;963:2;951:9;942:7;938:23;934:32;931:52;;;979:1;976;969:12;931:52;1011:9;1005:16;1030:42;1066:5;1030:42;:::i;:::-;1091:5;840:262;-1:-1:-1;;;840:262:1:o;1386:277::-;1453:6;1506:2;1494:9;1485:7;1481:23;1477:32;1474:52;;;1522:1;1519;1512:12;1474:52;1554:9;1548:16;1607:5;1600:13;1593:21;1586:5;1583:32;1573:60;;1629:1;1626;1619:12;1668:177;1590:7832:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063931b95bb116100fe578063c0a2526c1161009e578063dd62ed3e1161006e578063dd62ed3e1461046b578063e2417e1a14610495578063e6fd6bd51461049e578063eea7570e146104c5575f80fd5b8063c0a2526c14610415578063d0abb6931461041e578063d6febde814610445578063d79875eb14610458575f80fd5b8063a37a9fc0116100d9578063a37a9fc0146102fc578063a9059cbb146103d3578063ad7430cc146103e6578063bf333f2c1461040d575f80fd5b8063931b95bb14610371578063955648371461038257806395d89b4114610397575f80fd5b8063313ce5671161016957806359cf0f001161014457806359cf0f00146102fc57806370a082311461030457806386cb90be146103235780638da5cb5b1461034a575f80fd5b8063313ce567146102ae578063334041a6146102c8578063411557d1146102d5575f80fd5b8063095ea7b3116101a4578063095ea7b31461026757806318160ddd1461028a57806323b872dd14610292578063249d39e9146102a5575f80fd5b806304ccc04d146101ca57806306fdde0314610207578063090b76c314610250575b5f80fd5b6101dd6101d8366004611499565b6104ec565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102436040518060400160405280601381526020017f696d642f61636320747269616c20746f6b656e0000000000000000000000000081525081565b6040516101fe91906114b9565b61025960045481565b6040519081526020016101fe565b61027a61027536600461150c565b610784565b60405190151581526020016101fe565b6102595f5481565b61027a6102a0366004611534565b6107fd565b61025961271081565b6102b6601281565b60405160ff90911681526020016101fe565b60055461027a9060ff1681565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259603281565b610259610312366004611499565b60016020525f908152604090205481565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b61025969d3c21bcecceda100000081565b61039561039036600461156e565b6108a5565b005b6102436040518060400160405280600581526020017f545249414c00000000000000000000000000000000000000000000000000000081525081565b61027a6103e136600461150c565b610ac9565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259606481565b6101dd61dead81565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b610259610453366004611585565b610ade565b610259610466366004611585565b610d3e565b6102596104793660046115a5565b600260209081525f928352604080842090915290825290205481565b61025960035481565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b5f8173ffffffffffffffffffffffffffffffffffffffff163b5f0361051257508061058c565b5f805f7fd737d0c7000000000000000000000000000000000000000000000000000000005f5260205f60045f88617530fa92503d91505f51905082158061055a575081602014155b80610578575073ffffffffffffffffffffffffffffffffffffffff81115b1561058757505f949350505050565b925050505b73ffffffffffffffffffffffffffffffffffffffff811615806105fa57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061065057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106a657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806106fc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061071c575073ffffffffffffffffffffffffffffffffffffffff811630145b8061077357508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610773575073ffffffffffffffffffffffffffffffffffffffff82163b15155b1561077f57505f919050565b919050565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107eb9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461088f5761085e8382611603565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b61089a858585610f89565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610914576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460ff1615610951576040517f4313f1c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f0361098a576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af1158015610a4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6f9190611616565b610a77575f80fd5b600381905569d3c21bcecceda100000060048190556040805183815260208101929092527f67f9b61bf7b39fd24dd60467083f89ea77979db358db2804069474590a36c035910160405180910390a150565b5f610ad5338484610f89565b50600192915050565b5f600654600114610b1b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610b5c576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610b95576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015610c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611616565b610c57575f80fd5b5f612710610c66606486611635565b610c70919061164c565b90505f610c7d8286611603565b905080600354610c8d9190611684565b81600454610c9b9190611635565b610ca5919061164c565b9250821580610cb357508383105b15610cea576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f828254610cfb9190611684565b925050819055508260045f828254610d139190611603565b90915550610d249050303385610f89565b610d318583600186611069565b5050600160065592915050565b5f600654600114610d7b576040517fed3ba6a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055460ff16610dbc576040517f0f473f7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03610df5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e00333085610f89565b5f83600454610e0f9190611684565b84600354610e1d9190611635565b610e27919061164c565b90505f612710610e38606484611635565b610e42919061164c565b9050610e4e8183611603565b9250821580610e5c57508383105b15610e93576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160035f828254610ea49190611603565b925050819055508460045f828254610ebc9190611684565b90915550506040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610f51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f759190611616565b610f7d575f80fd5b610d3182825f88611069565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290610fbd908490611603565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526001602052604081208054839290610ff6908490611684565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161105c91815260200190565b60405180910390a3505050565b5f6064611077603286611635565b611081919061164c565b90505f61108e8286611603565b90505f61109a336104ec565b905073ffffffffffffffffffffffffffffffffffffffff81166110c7576110c18383611684565b91505f92505b811561118b576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815261dead6004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561115f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190611616565b61118b575f80fd5b8215611402576111db7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611684565b5a1015611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696d642f6163633a20696e73756666696369656e742067617300000000000000604482015260640160405180910390fd5b6040517fef6506db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063ef6506db907f0000000000000000000000000000000000000000000000000000000000000000906044016020604051808303815f8887f193505050508015611339575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261133691810190611697565b60015b611400576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156113cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f39190611616565b6113fb575f80fd5b611402565b505b60408051861515815260208101899052908101859052606081018490526080810183905273ffffffffffffffffffffffffffffffffffffffff82169033907f9adcf0ad0cda63c4d50f26a48925cf6405df27d422a39c456b5f03f661c829829060a00160405180910390a350505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077f575f80fd5b5f602082840312156114a9575f80fd5b6114b282611476565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f806040838503121561151d575f80fd5b61152683611476565b946020939093013593505050565b5f805f60608486031215611546575f80fd5b61154f84611476565b925061155d60208501611476565b929592945050506040919091013590565b5f6020828403121561157e575f80fd5b5035919050565b5f8060408385031215611596575f80fd5b50508035926020909101359150565b5f80604083850312156115b6575f80fd5b6115bf83611476565b91506115cd60208401611476565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107f7576107f76115d6565b5f60208284031215611626575f80fd5b815180151581146114b2575f80fd5b80820281158282048414176107f7576107f76115d6565b5f8261167f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156107f7576107f76115d6565b5f602082840312156116a7575f80fd5b505191905056fea164736f6c634300081a000a","sourceMap":"1590:7832:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7570:941;;;;;;:::i;:::-;;:::i;:::-;;;582:42:1;570:55;;;552:74;;540:2;525:18;7570:941:0;;;;;;;;1622:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2861:27::-;;;;;;;;;1265:25:1;;;1253:2;1238:18;2861:27:0;1119:177:1;8747:203:0;;;;;;:::i;:::-;;:::i;:::-;;;1771:14:1;;1764:22;1746:41;;1734:2;1719:18;8747:203:0;1606:187:1;2677:26:0;;;;;;8956:276;;;;;;:::i;:::-;;:::i;1766:36::-;;1796:6;1766:36;;1724:35;;1757:2;1724:35;;;;;2349:4:1;2337:17;;;2319:36;;2307:2;2292:18;1724:35:0;2177:184:1;2894:18:0;;;;;;;;;2328:30;;;;;1882:41;;1921:2;1882:41;;2709:44;;;;;;:::i;:::-;;;;;;;;;;;;;;2595:34;;;;;2472:30;;;;;2093:51;;2132:12;2093:51;;4413:405;;;;;;:::i;:::-;;:::i;:::-;;1679:39;;;;;;;;;;;;;;;;;;;;;8604:137;;;;;;:::i;:::-;;:::i;2364:33::-;;;;;1808:37;;1842:3;1808:37;;2014:73;;2045:42;2014:73;;2151:30;;;;;4921:661;;;;;;:::i;:::-;;:::i;5705:646::-;;;;;;:::i;:::-;;:::i;2759:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2830:25;;;;;;2187:42;;;;;2635:35;;;;;7570:941;7627:14;7657:3;:15;;;7676:1;7657:20;7653:578;;-1:-1:-1;7702:3:0;7653:578;;;7736:7;7757:12;7783:13;7863:66;7860:1;7853:77;8000:2;7997:1;7994;7991;7986:3;7979:5;7968:35;7962:41;;8028:16;8020:24;;8076:1;8070:8;8061:17;;8110:2;8109:3;:17;;;;8116:4;8124:2;8116:10;;8109:17;:46;;;-1:-1:-1;8138:17:0;8130:25;;8109:46;8105:69;;;-1:-1:-1;8172:1:0;;7570:941;-1:-1:-1;;;;7570:941:0:o;8105:69::-;8213:5;-1:-1:-1;;;7653:578:0;8257:20;;;;;:50;;;8299:7;8281:26;;:6;:26;;;8257:50;:76;;;;8329:3;8311:22;;:6;:22;;;8257:76;:111;;;;8363:5;8353:15;;:6;:15;;;8257:111;:133;;;;8382:8;8372:18;;:6;:18;;;8257:133;:160;;;-1:-1:-1;8394:23:0;;;8412:4;8394:23;8257:160;:219;;;;8448:3;8438:13;;:6;:13;;;:37;;;;-1:-1:-1;8455:15:0;;;;:20;;8438:37;8240:264;;;-1:-1:-1;8502:1:0;;7570:941;-1:-1:-1;7570:941:0:o;8240:264::-;7570:941;;;:::o;8747:203::-;8841:10;8815:4;8831:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;8885:37;8815:4;;8831:30;;8885:37;;;;8864:6;1265:25:1;;1253:2;1238:18;;1119:177;8885:37:0;;;;;;;;-1:-1:-1;8939:4:0;8747:203;;;;;:::o;8956:276::-;9066:15;;;9038:4;9066:15;;;:9;:15;;;;;;;;9082:10;9066:27;;;;;;;;9112:17;9107:22;;9103:68;;9161:10;9165:6;9161:1;:10;:::i;:::-;9131:15;;;;;;;:9;:15;;;;;;;;9147:10;9131:27;;;;;;;:40;9103:68;9181:23;9187:4;9193:2;9197:6;9181:5;:23::i;:::-;-1:-1:-1;9221:4:0;;8956:276;-1:-1:-1;;;;8956:276:0:o;4413:405::-;4469:10;:19;4483:5;4469:19;;4465:42;;4497:10;;;;;;;;;;;;;;4465:42;4521:6;;;;4517:34;;;4536:15;;;;;;;;;;;;;;4517:34;4565:9;4578:1;4565:14;4561:39;;4588:12;;;;;;;;;;;;;;4561:39;4610:6;:13;;;;4619:4;4610:13;;;4641:54;;;;;4658:10;4641:54;;;4239:74:1;4678:4:0;4329:18:1;;;4322:83;4421:18;;;4414:34;;;4641:16:0;:3;:16;;;;4212:18:1;;4641:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4633:63;;;;;;4706:10;:22;;;2132:12;4738;:27;;;4780:31;;;4915:25:1;;;4971:2;4956:18;;4949:34;;;;4780:31:0;;4888:18:1;4780:31:0;;;;;;;4413:405;:::o;8604:137::-;8668:4;8684:29;8690:10;8702:2;8706:6;8684:5;:29::i;:::-;-1:-1:-1;8730:4:0;8604:137;;;;:::o;4921:661::-;5025:16;3538:5;;3547:1;3538:10;3534:34;;3557:11;;;;;;;;;;;;;;3534:34;3586:1;3578:5;:9;5062:6:::1;::::0;::::1;;5057:31;;5077:11;;;;;;;;;;;;;;5057:31;5102:5;5111:1;5102:10:::0;5098:35:::1;;5121:12;;;;;;;;;;;;;;5098:35;5151:50;::::0;;;;5168:10:::1;5151:50;::::0;::::1;4239:74:1::0;5188:4:0::1;4329:18:1::0;;;4322:83;4421:18;;;4414:34;;;5151:3:0::1;:16;;::::0;::::1;::::0;4212:18:1;;5151:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5143:59;;;::::0;::::1;;5212:11;1796:6;5226:15;1842:3;5226:5:::0;:15:::1;:::i;:::-;:21;;;;:::i;:::-;5212:35:::0;-1:-1:-1;5257:11:0::1;5271;5212:35:::0;5271:5;:11:::1;:::i;:::-;5257:25;;5338:3;5325:10;;:16;;;;:::i;:::-;5318:3;5303:12;;:18;;;;:::i;:::-;:39;;;;:::i;:::-;5292:50:::0;-1:-1:-1;5356:13:0;;;:39:::1;;;5384:11;5373:8;:22;5356:39;5352:62;;;5404:10;;;;;;;;;;;;;;5352:62;5438:3;5424:10;;:17;;;;;;;:::i;:::-;;;;;;;;5467:8;5451:12;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;5485:42:0::1;::::0;-1:-1:-1;5499:4:0::1;5506:10;5518:8:::0;5485:5:::1;:42::i;:::-;5537:38;5548:5;5555:3;5560:4;5566:8;5537:10;:38::i;:::-;-1:-1:-1::0;;3616:1:0;3608:5;:9;4921:661;;-1:-1:-1;;4921:661:0:o;5705:646::-;5810:14;3538:5;;3547:1;3538:10;3534:34;;3557:11;;;;;;;;;;;;;;3534:34;3586:1;3578:5;:9;5845:6:::1;::::0;::::1;;5840:31;;5860:11;;;;;;;;;;;;;;5840:31;5885:7;5896:1;5885:12:::0;5881:37:::1;;5906:12;;;;;;;;;;;;;;5881:37;5928:41;5934:10;5954:4;5961:7;5928:5;:41::i;:::-;5979:13;6034:7;6019:12;;:22;;;;:::i;:::-;6008:7;5995:10;;:20;;;;:::i;:::-;:47;;;;:::i;:::-;5979:63:::0;-1:-1:-1;6052:11:0::1;1796:6;6066:15;1842:3;5979:63:::0;6066:15:::1;:::i;:::-;:21;;;;:::i;:::-;6052:35:::0;-1:-1:-1;6106:11:0::1;6052:35:::0;6106:5;:11:::1;:::i;:::-;6097:20:::0;-1:-1:-1;6131:11:0;;;:33:::1;;;6155:9;6146:6;:18;6131:33;6127:56;;;6173:10;;;;;;;;;;;;;;6127:56;6207:5;6193:10;;:19;;;;;;;:::i;:::-;;;;;;;;6238:7;6222:12;;:23;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;6263:32:0::1;::::0;;;;6276:10:::1;6263:32;::::0;::::1;5750:74:1::0;5840:18;;;5833:34;;;6263:3:0::1;:12;;::::0;::::1;::::0;5723:18:1;;6263:32:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6255:41;;;::::0;::::1;;6306:38;6317:5;6324:3;6329:5;6336:7;6306:10;:38::i;9238:182::-:0;9314:15;;;;;;;:9;:15;;;;;:25;;9333:6;;9314:15;:25;;9333:6;;9314:25;:::i;:::-;;;;-1:-1:-1;;9349:13:0;;;;;;;:9;:13;;;;;:23;;9366:6;;9349:13;:23;;9366:6;;9349:23;:::i;:::-;;;;;;;;9402:2;9387:26;;9396:4;9387:26;;;9406:6;9387:26;;;;1265:25:1;;1253:2;1238:18;;1119:177;9387:26:0;;;;;;;;9238:182;;;:::o;6446:870::-;6538:16;1842:3;6557:18;1921:2;6557:3;:18;:::i;:::-;:28;;;;:::i;:::-;6538:47;-1:-1:-1;6595:14:0;6612;6538:47;6612:3;:14;:::i;:::-;6595:31;;6636:14;6653:25;6667:10;6653:13;:25::i;:::-;6636:42;-1:-1:-1;6692:20:0;;;6688:162;;6728:18;6738:8;6728:18;;:::i;:::-;;;6838:1;6827:12;;6688:162;6863:10;;6859:51;;6883:26;;;;;2045:42;6883:26;;;5750:74:1;5840:18;;;5833:34;;;6883:3:0;:12;;;;;5723:18:1;;6883:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6875:35;;;;;;6924:12;;6920:313;;6973:22;6985:10;6973:9;:22;:::i;:::-;6960:9;:35;;6952:73;;;;;;;6080:2:1;6952:73:0;;;6062:21:1;6119:2;6099:18;;;6092:30;6158:27;6138:18;;;6131:55;6203:18;;6952:73:0;;;;;;;;7043:48;;;;;:14;5768:55:1;;;7043:48:0;;;5750:74:1;5840:18;;;5833:34;;;7043:7:0;:14;;;;7063:9;;5723:18:1;;7043:48:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7043:48:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7039:184;;7139:30;;;;;:12;5768:55:1;;;7139:30:0;;;5750:74:1;5840:18;;;5833:34;;;7139:3:0;:12;;;;5723:18:1;;7139:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7131:39;;;;;;7039:184;;;;;7247:62;;;6699:14:1;;6692:22;6674:41;;6746:2;6731:18;;6724:34;;;6774:18;;;6767:34;;;6832:2;6817:18;;6810:34;;;6875:3;6860:19;;6853:35;;;7247:62:0;;;;7253:10;;7247:62;;6661:3:1;6646:19;7247:62:0;;;;;;;6528:788;;;6446:870;;;;:::o;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;215:186;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:1:o;637:477::-;786:2;775:9;768:21;749:4;818:6;812:13;861:6;856:2;845:9;841:18;834:34;920:6;915:2;907:6;903:15;898:2;887:9;883:18;877:50;976:1;971:2;962:6;951:9;947:22;943:31;936:42;1105:2;1035:66;1030:2;1022:6;1018:15;1014:88;1003:9;999:104;995:113;987:121;;;637:477;;;;:::o;1301:300::-;1369:6;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1469:29;1488:9;1469:29;:::i;:::-;1459:39;1567:2;1552:18;;;;1539:32;;-1:-1:-1;;;1301:300:1:o;1798:374::-;1875:6;1883;1891;1944:2;1932:9;1923:7;1919:23;1915:32;1912:52;;;1960:1;1957;1950:12;1912:52;1983:29;2002:9;1983:29;:::i;:::-;1973:39;;2031:38;2065:2;2054:9;2050:18;2031:38;:::i;:::-;1798:374;;2021:48;;-1:-1:-1;;;2138:2:1;2123:18;;;;2110:32;;1798:374::o;2366:226::-;2425:6;2478:2;2466:9;2457:7;2453:23;2449:32;2446:52;;;2494:1;2491;2484:12;2446:52;-1:-1:-1;2539:23:1;;2366:226;-1:-1:-1;2366:226:1:o;2844:346::-;2912:6;2920;2973:2;2961:9;2952:7;2948:23;2944:32;2941:52;;;2989:1;2986;2979:12;2941:52;-1:-1:-1;;3034:23:1;;;3154:2;3139:18;;;3126:32;;-1:-1:-1;2844:346:1:o;3195:260::-;3263:6;3271;3324:2;3312:9;3303:7;3299:23;3295:32;3292:52;;;3340:1;3337;3330:12;3292:52;3363:29;3382:9;3363:29;:::i;:::-;3353:39;;3411:38;3445:2;3434:9;3430:18;3411:38;:::i;:::-;3401:48;;3195:260;;;;;:::o;3715:184::-;3767:77;3764:1;3757:88;3864:4;3861:1;3854:15;3888:4;3885:1;3878:15;3904:128;3971:9;;;3992:11;;;3989:37;;;4006:18;;:::i;4459:277::-;4526:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:52;;;4595:1;4592;4585:12;4547:52;4627:9;4621:16;4680:5;4673:13;4666:21;4659:5;4656:32;4646:60;;4702:1;4699;4692:12;4994:168;5067:9;;;5098;;5115:15;;;5109:22;;5095:37;5085:71;;5136:18;;:::i;5167:274::-;5207:1;5233;5223:189;;5268:77;5265:1;5258:88;5369:4;5366:1;5359:15;5397:4;5394:1;5387:15;5223:189;-1:-1:-1;5426:9:1;;5167:274::o;5446:125::-;5511:9;;;5532:10;;;5529:36;;;5545:18;;:::i;6232:184::-;6302:6;6355:2;6343:9;6334:7;6330:23;6326:32;6323:52;;;6371:1;6368;6361:12;6323:52;-1:-1:-1;6394:16:1;;6232:184;-1:-1:-1;6232:184:1:o","linkReferences":{},"immutableReferences":{"82":[{"start":1059,"length":32},{"start":1538,"length":32},{"start":2565,"length":32},{"start":3024,"length":32},{"start":3830,"length":32},{"start":4356,"length":32},{"start":5001,"length":32}],"85":[{"start":1187,"length":32},{"start":1452,"length":32},{"start":4756,"length":32}],"88":[{"start":730,"length":32},{"start":1624,"length":32}],"90":[{"start":1003,"length":32},{"start":1710,"length":32}],"93":[{"start":847,"length":32},{"start":2237,"length":32}],"96":[{"start":808,"length":32},{"start":4535,"length":32},{"start":4797,"length":32}],"98":[{"start":1226,"length":32},{"start":4502,"length":32}]}}}}}}},"signatures":{"function":[{"signature":"allowance(address,address)","signatureHash4":"0xdd62ed3e","signatureHash32":"0xdd62ed3e90e97b3d417db9c0c7522647811bafca5afc6694f143588d255fdfb4"},{"signature":"approve(address,uint256)","signatureHash4":"0x095ea7b3","signatureHash32":"0x095ea7b334ae44009aa867bfb386f5c3b4b443ac6f0ee573fa91c4608fbadfba"},{"signature":"balanceOf(address)","signatureHash4":"0x70a08231","signatureHash32":"0x70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be"},{"signature":"BPS()","signatureHash4":"0x249d39e9","signatureHash32":"0x249d39e95dcf38deb6c884103e990949e9d7e5d370eee3d20091aba0a46aa824"},{"signature":"BURN()","signatureHash4":"0xc0a2526c","signatureHash32":"0xc0a2526c4d26b4a9ab1997a87f72a2602f724c8ed20819a3c8357687e62aad0a"},{"signature":"BURN_BPS()","signatureHash4":"0xa37a9fc0","signatureHash32":"0xa37a9fc043a15e1de891bbcb4642316d0e8ac5602dd31973b2b4aa4aa2ec83bf"},{"signature":"buy(uint256,uint256)","signatureHash4":"0xd6febde8","signatureHash32":"0xd6febde8e106f09efd155cebc8789e26a04bdc3a9c44367e4fa0cab9b08eb254"},{"signature":"CASHBACK_BPS()","signatureHash4":"0x59cf0f00","signatureHash32":"0x59cf0f00f91d57e72c914b4bd643ff679779ca4e6a047095f56d27a24a35bc68"},{"signature":"creditGas()","signatureHash4":"0x86cb90be","signatureHash32":"0x86cb90be3eacc16a19c6811eefc024671c317c8becddc2ae9b070221859a7ac9"},{"signature":"decimals()","signatureHash4":"0x313ce567","signatureHash32":"0x313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9"},{"signature":"FEE_BPS()","signatureHash4":"0xbf333f2c","signatureHash32":"0xbf333f2c393111a6a58aca7db441ba25f737c6fdea3027ad33d79d0a6220ff7f"},{"signature":"gasReserve()","signatureHash4":"0xeea7570e","signatureHash32":"0xeea7570e71d1f3bcd968443ce396847bac5599610a18e76db52705e4ed9ef08f"},{"signature":"IMD()","signatureHash4":"0xd0abb693","signatureHash32":"0xd0abb693fd6f7ee84ca3a8b7788ee1390e4f0db42fe430ffdd8d6a7e3e8363d6"},{"signature":"name()","signatureHash4":"0x06fdde03","signatureHash32":"0x06fdde0383f15d582d1a74511486c9ddf862a882fb7904b3d9fe9b8b8e58a796"},{"signature":"owner()","signatureHash4":"0x8da5cb5b","signatureHash32":"0x8da5cb5b36e7f68c1d2e56001220cdbdd3ba2616072f718acfda4a06441a807d"},{"signature":"RECEIVER()","signatureHash4":"0xad7430cc","signatureHash32":"0xad7430cce79d2ead8aba835f4de862c3d2719c7cdebacd23ae8cad704b6c4f59"},{"signature":"reserveImd()","signatureHash4":"0xe2417e1a","signatureHash32":"0xe2417e1a09576f4cb9760c59c55e224f299c3aaf536251f0e4e8a28ceefd5d93"},{"signature":"reserveTrial()","signatureHash4":"0x090b76c3","signatureHash32":"0x090b76c371cbc8ac3dccf9171bab64bc0982c7718b4a71212be80c5fdb909015"},{"signature":"resolveTrader(address)","signatureHash4":"0x04ccc04d","signatureHash32":"0x04ccc04d56bb48fd17be45bf177de905e3612b7d23adaa051526a56f21b89e56"},{"signature":"seeded()","signatureHash4":"0x334041a6","signatureHash32":"0x334041a6f14bc1a38b54e122e498ba87c90e7c26669c1e7a8a153be6226ad70e"},{"signature":"seed(uint256)","signatureHash4":"0x95564837","signatureHash32":"0x95564837f810e24ab778098ec5770705ca108a0fcf1e51a436f69202d046c0e5"},{"signature":"sell(uint256,uint256)","signatureHash4":"0xd79875eb","signatureHash32":"0xd79875eb1489ed8e5731ccc3429d0eb54234baacf777e45c2589e85a7c857dde"},{"signature":"stacker()","signatureHash4":"0xe6fd6bd5","signatureHash32":"0xe6fd6bd5766a883a7d7b1c3fee9678bf3b5703d09907873e002523c151018930"},{"signature":"symbol()","signatureHash4":"0x95d89b41","signatureHash32":"0x95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec"},{"signature":"totalSupply()","signatureHash4":"0x18160ddd","signatureHash32":"0x18160ddd7f15c72528c2f94fd8dfe3c8d5aa26e2c50c7d81f4bc7bee8d4b7932"},{"signature":"transfer(address,uint256)","signatureHash4":"0xa9059cbb","signatureHash32":"0xa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b"},{"signature":"transferFrom(address,address,uint256)","signatureHash4":"0x23b872dd","signatureHash32":"0x23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b"},{"signature":"TRIAL_SUPPLY()","signatureHash4":"0x931b95bb","signatureHash32":"0x931b95bb403fa0bbccde9be5a1008e21b4be7847ab3408094c1c7af136c4e6ce"},{"signature":"VAULT()","signatureHash4":"0x411557d1","signatureHash32":"0x411557d130a3b66ba1ad53095809a9e17a69ccf2df14dfb96d4444db0609c317"}],"event":[{"signature":"Approval(address,address,uint256)","signatureHash4":"0x8c5be1e5","signatureHash32":"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"},{"signature":"Seeded(uint256,uint256)","signatureHash4":"0x67f9b61b","signatureHash32":"0x67f9b61bf7b39fd24dd60467083f89ea77979db358db2804069474590a36c035"},{"signature":"Trade(address,address,bool,uint256,uint256,uint256,uint256)","signatureHash4":"0x9adcf0ad","signatureHash32":"0x9adcf0ad0cda63c4d50f26a48925cf6405df27d422a39c456b5f03f661c82982"},{"signature":"Transfer(address,address,uint256)","signatureHash4":"0xddf252ad","signatureHash32":"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"}],"error":[{"signature":"AlreadySeeded()","signatureHash4":"0x4313f1c8","signatureHash32":"0x4313f1c8bc5ea67fdff2074bee21e45f0b4fa6c59c419a19880dca27bafc1f7c"},{"signature":"NotOwner()","signatureHash4":"0x30cd7471","signatureHash32":"0x30cd74712f59d478562d48e2d35de830db72c60a63dd08ae59199eec990b5bc4"},{"signature":"NotSeeded()","signatureHash4":"0x0f473f75","signatureHash32":"0x0f473f759f667df94c8367f58e002819308d118f555d892e37676fcaeb12ec57"},{"signature":"Reentrant()","signatureHash4":"0xed3ba6a6","signatureHash32":"0xed3ba6a62877a99990a32617b4e001f2c85c7886f010c9b166e8438fd38bcb40"},{"signature":"Slippage()","signatureHash4":"0x7dd37f70","signatureHash32":"0x7dd37f70bf4a037967b574f13ad5cb4535ea41ca496247d3b8266e5f92a204fa"},{"signature":"ZeroAmount()","signatureHash4":"0x1f2a2005","signatureHash32":"0x1f2a2005cb66a8e145327e8814e243a0996aec9bfe1e15a495778b1236dbd485"}]},"proxyResolution":{"isProxy":false,"proxyType":null,"implementations":[]},"match":"match","chainId":"4663","address":"0x81D17894B724dcb462bd5585Be0792b1B32D19CC"}