harb/services/ponder/abis/Kraiken.json
openhands 85350caf52 feat: OptimizerV3 with direct 2D staking-to-LP parameter mapping
Core protocol changes for launch readiness:

- OptimizerV3: binary bear/bull mapping from (staking%, avgTax) — avoids
  exploitable AW 30-90 kill zone. Bear: AS=30%, AW=100, CI=0, DD=0.3e18.
  Bull: AS=100%, AW=20, CI=0, DD=1e18. UUPS upgradeable with __gap[48].
- Directional VWAP: only records prices on ETH inflow (buys), preventing
  sell-side dilution of price memory
- Floor formula: unified max(scarcity, mirror, clamp) — VWAP mirror uses
  distance from adjusted VWAP as floor distance, no branching
- PriceOracle (M-1 fix): correct fallback TWAP divisor (60000s, not 300s)
- Access control (M-2 fix): deployer-only guard on one-time setters
- Recenter rate limit (M-3 fix): 60-second cooldown for open recenters
- Safe fallback params: recenter() optimizer-failure defaults changed from
  exploitable CI=50%/AW=50 to safe bear-mode CI=0/AW=100
- Recentered event for monitoring and indexing
- VERSION bump to 2, kraiken-lib COMPATIBLE_CONTRACT_VERSIONS updated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:21:18 +00:00

1 line
No EOL
93 KiB
JSON

{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"minStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"outstandingSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"peripheryContracts","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"previousTotalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setLiquidityManager","inputs":[{"name":"liquidityManager_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPreviousTotalSupply","inputs":[{"name":"_ts","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingPool","inputs":[{"name":"stakingPool_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","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"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressAlreadySet","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]},{"type":"error","name":"ZeroAddressInSetter","inputs":[]}],"bytecode":{"object":"0x610160604052348015610010575f5ffd5b50604051611b7b380380611b7b83398101604081905261002f91610238565b6040805180820190915260018152603160f81b602082015282908190818460036100598382610321565b5060046100668282610321565b5061007691508390506005610123565b61012052610085816006610123565b61014052815160208084019190912060e052815190820120610100524660a05261011160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250610433915050565b5f60208351101561013e5761013783610155565b905061014f565b816101498482610321565b5060ff90505b92915050565b5f5f829050601f81511115610188578260405163305a27a960e01b815260040161017f91906103db565b60405180910390fd5b805161019382610410565b179392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126101be575f5ffd5b81516001600160401b038111156101d7576101d761019b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102055761020561019b565b60405281815283820160200185101561021c575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610249575f5ffd5b82516001600160401b0381111561025e575f5ffd5b61026a858286016101af565b602085015190935090506001600160401b03811115610287575f5ffd5b610293858286016101af565b9150509250929050565b600181811c908216806102b157607f821691505b6020821081036102cf57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561031c57805f5260205f20601f840160051c810160208510156102fa5750805b601f840160051c820191505b81811015610319575f8155600101610306565b50505b505050565b81516001600160401b0381111561033a5761033a61019b565b61034e81610348845461029d565b846102d5565b6020601f821160018114610380575f83156103695750848201515b5f19600385901b1c1916600184901b178455610319565b5f84815260208120601f198516915b828110156103af578785015182556020948501946001909201910161038f565b50848210156103cc57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102cf575f1960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516116f76104845f395f61065601525f61062b01525f610df101525f610dc901525f610d2401525f610d4e01525f610d7801526116f75ff3fe608060405234801561000f575f5ffd5b506004361061016d575f3560e01c80637ecebe00116100d9578063a457c2d711610093578063caacafe21161006e578063caacafe21461031d578063d505accf14610325578063dd62ed3e14610338578063ffa1ad741461034b575f5ffd5b8063a457c2d7146102d1578063a9059cbb146102e4578063b79be3f0146102f7575f5ffd5b80637ecebe001461026c57806380ba0f0f1461027f57806384b0196e1461028857806395d89b41146102a35780639c547c4b146102ab578063a0712d68146102be575f5ffd5b80633644e5151161012a5780633644e515146101fb578063375b3c0a14610203578063395093511461020b5780633c1624d41461021e57806342966c681461023157806370a0823114610244575f5ffd5b806306fdde0314610171578063095ea7b31461018f57806318160ddd146101b257806323b872dd146101c45780633028f63a146101d7578063313ce567146101ec575b5f5ffd5b610179610353565b60405161018691906113e1565b60405180910390f35b6101a261019d366004611415565b6103e3565b6040519015158152602001610186565b6002545b604051908152602001610186565b6101a26101d236600461143d565b6103fc565b6101ea6101e5366004611477565b61041f565b005b60405160128152602001610186565b6101b6610494565b6101b66104a2565b6101a2610219366004611415565b6104b3565b6101ea61022c366004611477565b6104d4565b6101ea61023f366004611490565b610549565b6101b6610252366004611477565b6001600160a01b03165f9081526020819052604090205490565b6101b661027a366004611477565b610601565b6101b6600b5481565b61029061061e565b60405161018697969594939291906114a7565b6101796106a5565b6101ea6102b9366004611490565b6106b4565b6101ea6102cc366004611490565b6106e3565b6101a26102df366004611415565b6107a1565b6101a26102f2366004611415565b61081b565b600954600a54604080516001600160a01b03938416815292909116602083015201610186565b6101b6610828565b6101ea61033336600461153d565b61084f565b6101b66103463660046115aa565b6109b0565b6101b6600281565b606060038054610362906115db565b80601f016020809104026020016040519081016040528092919081815260200182805461038e906115db565b80156103d95780601f106103b0576101008083540402835291602001916103d9565b820191905f5260205f20905b8154815290600101906020018083116103bc57829003601f168201915b5050505050905090565b5f336103f08185856109da565b60019150505b92915050565b5f33610409858285610afe565b610414858585610b76565b506001949350505050565b6001600160a01b0381165f0361044857604051633b2e669960e01b815260040160405180910390fd5b600a546001600160a01b03161561047257604051637b1616c160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61049d610d18565b905090565b5f610bb8600b5461049d9190611621565b5f336103f08185856104c583836109b0565b6104cf9190611640565b6109da565b6001600160a01b0381165f036104fd57604051633b2e669960e01b815260040160405180910390fd5b6009546001600160a01b03161561052757604051637b1616c160e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b0316331461057c5760405162461bcd60e51b815260040161057390611653565b60405180910390fd5b80156105fe57600a546001600160a01b03165f9081526020819052604090205480156105e6575f816105ad60025490565b6105b79190611683565b6105c18484611696565b6105cb9190611621565b600a549091506105e4906001600160a01b031682610e41565b505b6009546105fc906001600160a01b031683610e41565b505b50565b6001600160a01b0381165f908152600760205260408120546103f6565b5f606080828080836106517f00000000000000000000000000000000000000000000000000000000000000006005610f69565b61067c7f00000000000000000000000000000000000000000000000000000000000000006006610f69565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610362906115db565b6009546001600160a01b031633146106de5760405162461bcd60e51b815260040161057390611653565b600b55565b6009546001600160a01b0316331461070d5760405162461bcd60e51b815260040161057390611653565b801561078f57600a546001600160a01b03165f908152602081905260409020548015610777575f8161073e60025490565b6107489190611683565b6107528484611696565b61075c9190611621565b600a54909150610775906001600160a01b031682611012565b505b60095461078d906001600160a01b031683611012565b505b600b545f036105fe57600254600b5550565b5f33816107ae82866109b0565b90508381101561080e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610573565b61041482868684036109da565b5f336103f0818585610b76565b6009546001600160a01b03165f9081526020819052604081205460025461049d9190611683565b8342111561089f5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610573565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108cd8c6110d0565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f610927826110f7565b90505f61093682878787611123565b9050896001600160a01b0316816001600160a01b0316146109995760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610573565b6109a48a8a8a6109da565b50505050505050505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610a3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610573565b6001600160a01b038216610a9d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610573565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f610b0984846109b0565b90505f198114610b705781811015610b635760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610573565b610b7084848484036109da565b50505050565b6001600160a01b038316610bda5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610573565b6001600160a01b038216610c3c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610573565b6001600160a01b0383165f9081526020819052604090205481811015610cb35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610573565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b70565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610d7057507f000000000000000000000000000000000000000000000000000000000000000046145b15610d9a57507f000000000000000000000000000000000000000000000000000000000000000090565b61049d604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216610ea15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610573565b6001600160a01b0382165f9081526020819052604090205481811015610f145760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610573565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610af1565b606060ff8314610f8357610f7c83611149565b90506103f6565b818054610f8f906115db565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbb906115db565b80156110065780601f10610fdd57610100808354040283529160200191611006565b820191905f5260205f20905b815481529060010190602001808311610fe957829003601f168201915b505050505090506103f6565b6001600160a01b0382166110685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610573565b8060025f8282546110799190611640565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105fc565b6001600160a01b0381165f9081526007602052604090208054600181018255905b50919050565b5f6103f6611103610d18565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f61113287878787611186565b9150915061113f81611243565b5095945050505050565b60605f6111558361138c565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156111bb57505f9050600361123a565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561120c573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611234575f6001925092505061123a565b91505f90505b94509492505050565b5f816004811115611256576112566116ad565b0361125e5750565b6001816004811115611272576112726116ad565b036112bf5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610573565b60028160048111156112d3576112d36116ad565b036113205760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610573565b6003816004811115611334576113346116ad565b036105fe5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610573565b5f60ff8216601f8111156103f657604051632cd44ac360e21b815260040160405180910390fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6113f360208301846113b3565b9392505050565b80356001600160a01b0381168114611410575f5ffd5b919050565b5f5f60408385031215611426575f5ffd5b61142f836113fa565b946020939093013593505050565b5f5f5f6060848603121561144f575f5ffd5b611458846113fa565b9250611466602085016113fa565b929592945050506040919091013590565b5f60208284031215611487575f5ffd5b6113f3826113fa565b5f602082840312156114a0575f5ffd5b5035919050565b60ff60f81b8816815260e060208201525f6114c560e08301896113b3565b82810360408401526114d781896113b3565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561152c57835183526020938401939092019160010161150e565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611553575f5ffd5b61155c886113fa565b965061156a602089016113fa565b95506040880135945060608801359350608088013560ff8116811461158d575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156115bb575f5ffd5b6115c4836113fa565b91506115d2602084016113fa565b90509250929050565b600181811c908216806115ef57607f821691505b6020821081036110f157634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261163b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156103f6576103f661160d565b60208082526016908201527537b7363c903634b8bab4b234ba3c9036b0b730b3b2b960511b604082015260600190565b818103818111156103f6576103f661160d565b80820281158282048414176103f6576103f661160d565b634e487b7160e01b5f52602160045260245ffdfea26469706673582212205ff10cc77a8af1b77cf21e108dd904babbfd85d77f21223f35cb6293d3fcf57f64736f6c634300081e0033","sourceMap":"818:5693:80:-:0;;;2183:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3178:431:48;;;;;;;;;;;;-1:-1:-1;;;3178:431:48;;;;2273:5:80;;;;;2252:7;2046:5:35;:13;2273:5:80;2046::35;:13;:::i;:::-;-1:-1:-1;2069:7:35;:17;2079:7;2069;:17;:::i;:::-;-1:-1:-1;3251:45:48;;-1:-1:-1;3251:4:48;;-1:-1:-1;3282:13:48;3251:30;:45::i;:::-;3243:53;;3317:51;:7;3351:16;3317:33;:51::i;:::-;3306:62;;3392:22;;;;;;;;;;3378:36;;3441:25;;;;;;3424:42;;3494:13;3477:30;;3542:23;4077:11;;4090:14;;4054:81;;;1929:95;4054:81;;;4204:25:114;4245:18;;;4238:34;;;;4288:18;;;4281:34;4106:13:48;4331:18:114;;;4324:34;4129:4:48;4374:19:114;;;4367:61;4018:7:48;;4176:19:114;;4054:81:48;;;;;;;;;;;;4044:92;;;;;;4037:99;;3963:180;;3542:23;3517:48;;-1:-1:-1;;3597:4:48;3575:27;;-1:-1:-1;818:5693:80;;-1:-1:-1;;818:5693:80;2895:341:44;2991:11;3040:2;3024:5;3018:19;:24;3014:216;;;3065:20;3079:5;3065:13;:20::i;:::-;3058:27;;;;3014:216;3142:5;3116:46;3157:5;3142;3116:46;:::i;:::-;-1:-1:-1;1371:66:44;;-1:-1:-1;3014:216:44;2895:341;;;;:::o;1689:286::-;1754:11;1777:17;1803:3;1777:30;;1835:2;1821:4;:11;:16;1817:72;;;1874:3;1860:18;;-1:-1:-1;;;1860:18:44;;;;;;;;:::i;:::-;;;;;;;;1817:72;1955:11;;1938:13;1955:4;1938:13;:::i;:::-;1930:36;;1689:286;-1:-1:-1;;;1689:286:44:o;14:127:114:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:114;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:114;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:114;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:114;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:114:o;874:557::-;973:6;981;1034:2;1022:9;1013:7;1009:23;1005:32;1002:52;;;1050:1;1047;1040:12;1002:52;1077:16;;-1:-1:-1;;;;;1105:30:114;;1102:50;;;1148:1;1145;1138:12;1102:50;1171:61;1224:7;1215:6;1204:9;1200:22;1171:61;:::i;:::-;1278:2;1263:18;;1257:25;1161:71;;-1:-1:-1;1257:25:114;-1:-1:-1;;;;;;1294:32:114;;1291:52;;;1339:1;1336;1329:12;1291:52;1362:63;1417:7;1406:8;1395:9;1391:24;1362:63;:::i;:::-;1352:73;;;874:557;;;;;:::o;1436:380::-;1515:1;1511:12;;;;1558;;;1579:61;;1633:4;1625:6;1621:17;1611:27;;1579:61;1686:2;1678:6;1675:14;1655:18;1652:38;1649:161;;1732:10;1727:3;1723:20;1720:1;1713:31;1767:4;1764:1;1757:15;1795:4;1792:1;1785:15;1649:161;;1436:380;;;:::o;1947:518::-;2049:2;2044:3;2041:11;2038:421;;;2085:5;2082:1;2075:16;2129:4;2126:1;2116:18;2199:2;2187:10;2183:19;2180:1;2176:27;2170:4;2166:38;2235:4;2223:10;2220:20;2217:47;;;-1:-1:-1;2258:4:114;2217:47;2313:2;2308:3;2304:12;2301:1;2297:20;2291:4;2287:31;2277:41;;2368:81;2386:2;2379:5;2376:13;2368:81;;;2445:1;2431:16;;2412:1;2401:13;2368:81;;;2372:3;;2038:421;1947:518;;;:::o;2641:1299::-;2761:10;;-1:-1:-1;;;;;2783:30:114;;2780:56;;;2816:18;;:::i;:::-;2845:97;2935:6;2895:38;2927:4;2921:11;2895:38;:::i;:::-;2889:4;2845:97;:::i;:::-;2991:4;3022:2;3011:14;;3039:1;3034:649;;;;3727:1;3744:6;3741:89;;;-1:-1:-1;3796:19:114;;;3790:26;3741:89;-1:-1:-1;;2598:1:114;2594:11;;;2590:24;2586:29;2576:40;2622:1;2618:11;;;2573:57;3843:81;;3004:930;;3034:649;1894:1;1887:14;;;1931:4;1918:18;;-1:-1:-1;;3070:20:114;;;3188:222;3202:7;3199:1;3196:14;3188:222;;;3284:19;;;3278:26;3263:42;;3391:4;3376:20;;;;3344:1;3332:14;;;;3218:12;3188:222;;;3192:3;3438:6;3429:7;3426:19;3423:201;;;3499:19;;;3493:26;-1:-1:-1;;3582:1:114;3578:14;;;3594:3;3574:24;3570:37;3566:42;3551:58;3536:74;;3423:201;-1:-1:-1;;;;3670:1:114;3654:14;;;3650:22;3637:36;;-1:-1:-1;2641:1299:114:o;4439:418::-;4588:2;4577:9;4570:21;4551:4;4620:6;4614:13;4663:6;4658:2;4647:9;4643:18;4636:34;4722:6;4717:2;4709:6;4705:15;4700:2;4689:9;4685:18;4679:50;4778:1;4773:2;4764:6;4753:9;4749:22;4745:31;4738:42;4848:2;4841;4837:7;4832:2;4824:6;4820:15;4816:29;4805:9;4801:45;4797:54;4789:62;;;4439:418;;;;:::o;4862:297::-;4980:12;;5027:4;5016:16;;;5010:23;;4980:12;5045:16;;5042:111;;;-1:-1:-1;;5119:4:114;5115:17;;;;5112:1;5108:25;5104:38;5093:50;;4862:297;-1:-1:-1;4862:297:114:o;:::-;818:5693:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061016d575f3560e01c80637ecebe00116100d9578063a457c2d711610093578063caacafe21161006e578063caacafe21461031d578063d505accf14610325578063dd62ed3e14610338578063ffa1ad741461034b575f5ffd5b8063a457c2d7146102d1578063a9059cbb146102e4578063b79be3f0146102f7575f5ffd5b80637ecebe001461026c57806380ba0f0f1461027f57806384b0196e1461028857806395d89b41146102a35780639c547c4b146102ab578063a0712d68146102be575f5ffd5b80633644e5151161012a5780633644e515146101fb578063375b3c0a14610203578063395093511461020b5780633c1624d41461021e57806342966c681461023157806370a0823114610244575f5ffd5b806306fdde0314610171578063095ea7b31461018f57806318160ddd146101b257806323b872dd146101c45780633028f63a146101d7578063313ce567146101ec575b5f5ffd5b610179610353565b60405161018691906113e1565b60405180910390f35b6101a261019d366004611415565b6103e3565b6040519015158152602001610186565b6002545b604051908152602001610186565b6101a26101d236600461143d565b6103fc565b6101ea6101e5366004611477565b61041f565b005b60405160128152602001610186565b6101b6610494565b6101b66104a2565b6101a2610219366004611415565b6104b3565b6101ea61022c366004611477565b6104d4565b6101ea61023f366004611490565b610549565b6101b6610252366004611477565b6001600160a01b03165f9081526020819052604090205490565b6101b661027a366004611477565b610601565b6101b6600b5481565b61029061061e565b60405161018697969594939291906114a7565b6101796106a5565b6101ea6102b9366004611490565b6106b4565b6101ea6102cc366004611490565b6106e3565b6101a26102df366004611415565b6107a1565b6101a26102f2366004611415565b61081b565b600954600a54604080516001600160a01b03938416815292909116602083015201610186565b6101b6610828565b6101ea61033336600461153d565b61084f565b6101b66103463660046115aa565b6109b0565b6101b6600281565b606060038054610362906115db565b80601f016020809104026020016040519081016040528092919081815260200182805461038e906115db565b80156103d95780601f106103b0576101008083540402835291602001916103d9565b820191905f5260205f20905b8154815290600101906020018083116103bc57829003601f168201915b5050505050905090565b5f336103f08185856109da565b60019150505b92915050565b5f33610409858285610afe565b610414858585610b76565b506001949350505050565b6001600160a01b0381165f0361044857604051633b2e669960e01b815260040160405180910390fd5b600a546001600160a01b03161561047257604051637b1616c160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61049d610d18565b905090565b5f610bb8600b5461049d9190611621565b5f336103f08185856104c583836109b0565b6104cf9190611640565b6109da565b6001600160a01b0381165f036104fd57604051633b2e669960e01b815260040160405180910390fd5b6009546001600160a01b03161561052757604051637b1616c160e11b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b0316331461057c5760405162461bcd60e51b815260040161057390611653565b60405180910390fd5b80156105fe57600a546001600160a01b03165f9081526020819052604090205480156105e6575f816105ad60025490565b6105b79190611683565b6105c18484611696565b6105cb9190611621565b600a549091506105e4906001600160a01b031682610e41565b505b6009546105fc906001600160a01b031683610e41565b505b50565b6001600160a01b0381165f908152600760205260408120546103f6565b5f606080828080836106517f00000000000000000000000000000000000000000000000000000000000000006005610f69565b61067c7f00000000000000000000000000000000000000000000000000000000000000006006610f69565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610362906115db565b6009546001600160a01b031633146106de5760405162461bcd60e51b815260040161057390611653565b600b55565b6009546001600160a01b0316331461070d5760405162461bcd60e51b815260040161057390611653565b801561078f57600a546001600160a01b03165f908152602081905260409020548015610777575f8161073e60025490565b6107489190611683565b6107528484611696565b61075c9190611621565b600a54909150610775906001600160a01b031682611012565b505b60095461078d906001600160a01b031683611012565b505b600b545f036105fe57600254600b5550565b5f33816107ae82866109b0565b90508381101561080e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610573565b61041482868684036109da565b5f336103f0818585610b76565b6009546001600160a01b03165f9081526020819052604081205460025461049d9190611683565b8342111561089f5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610573565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108cd8c6110d0565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f610927826110f7565b90505f61093682878787611123565b9050896001600160a01b0316816001600160a01b0316146109995760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610573565b6109a48a8a8a6109da565b50505050505050505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610a3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610573565b6001600160a01b038216610a9d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610573565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f610b0984846109b0565b90505f198114610b705781811015610b635760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610573565b610b7084848484036109da565b50505050565b6001600160a01b038316610bda5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610573565b6001600160a01b038216610c3c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610573565b6001600160a01b0383165f9081526020819052604090205481811015610cb35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610573565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b70565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610d7057507f000000000000000000000000000000000000000000000000000000000000000046145b15610d9a57507f000000000000000000000000000000000000000000000000000000000000000090565b61049d604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216610ea15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610573565b6001600160a01b0382165f9081526020819052604090205481811015610f145760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610573565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610af1565b606060ff8314610f8357610f7c83611149565b90506103f6565b818054610f8f906115db565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbb906115db565b80156110065780601f10610fdd57610100808354040283529160200191611006565b820191905f5260205f20905b815481529060010190602001808311610fe957829003601f168201915b505050505090506103f6565b6001600160a01b0382166110685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610573565b8060025f8282546110799190611640565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105fc565b6001600160a01b0381165f9081526007602052604090208054600181018255905b50919050565b5f6103f6611103610d18565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f61113287878787611186565b9150915061113f81611243565b5095945050505050565b60605f6111558361138c565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156111bb57505f9050600361123a565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561120c573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611234575f6001925092505061123a565b91505f90505b94509492505050565b5f816004811115611256576112566116ad565b0361125e5750565b6001816004811115611272576112726116ad565b036112bf5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610573565b60028160048111156112d3576112d36116ad565b036113205760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610573565b6003816004811115611334576113346116ad565b036105fe5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610573565b5f60ff8216601f8111156103f657604051632cd44ac360e21b815260040160405180910390fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6113f360208301846113b3565b9392505050565b80356001600160a01b0381168114611410575f5ffd5b919050565b5f5f60408385031215611426575f5ffd5b61142f836113fa565b946020939093013593505050565b5f5f5f6060848603121561144f575f5ffd5b611458846113fa565b9250611466602085016113fa565b929592945050506040919091013590565b5f60208284031215611487575f5ffd5b6113f3826113fa565b5f602082840312156114a0575f5ffd5b5035919050565b60ff60f81b8816815260e060208201525f6114c560e08301896113b3565b82810360408401526114d781896113b3565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561152c57835183526020938401939092019160010161150e565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611553575f5ffd5b61155c886113fa565b965061156a602089016113fa565b95506040880135945060608801359350608088013560ff8116811461158d575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156115bb575f5ffd5b6115c4836113fa565b91506115d2602084016113fa565b90509250929050565b600181811c908216806115ef57607f821691505b6020821081036110f157634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261163b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156103f6576103f661160d565b60208082526016908201527537b7363c903634b8bab4b234ba3c9036b0b730b3b2b960511b604082015260600190565b818103818111156103f6576103f661160d565b80820281158282048414176103f6576103f661160d565b634e487b7160e01b5f52602160045260245ffdfea26469706673582212205ff10cc77a8af1b77cf21e108dd904babbfd85d77f21223f35cb6293d3fcf57f64736f6c634300081e0033","sourceMap":"818:5693:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1181:14:114;;1174:22;1156:41;;1144:2;1129:18;4444:197:35;1016:187:114;3255:106:35;3342:12;;3255:106;;;1354:25:114;;;1342:2;1327:18;3255:106:35;1208:177:114;5203:256:35;;;;;;:::i;:::-;;:::i;3288:235:80:-;;;;;;:::i;:::-;;:::i;:::-;;3104:91:35;;;3186:2;2102:36:114;;2090:2;2075:18;3104:91:35;1960:184:114;2836:113:37;;;:::i;3981:116:80:-;;;:::i;5854:234:35:-;;;;;;:::i;:::-;;:::i;2663:265:80:-;;;;;;:::i;:::-;;:::i;5478:496::-;;;;;;:::i;:::-;;:::i;3419:125:35:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:35;3493:7;3519:18;;;;;;;;;;;;3419:125;2603:126:37;;;;;;:::i;:::-;;:::i;1703:34:80:-;;;;;;5021:633:48;;;:::i;:::-;;;;;;;;;;;;;:::i;2369:102:35:-;;;:::i;6092:117:80:-;;;;;;:::i;:::-;;:::i;4453:598::-;;;;;;:::i;:::-;;:::i;6575:427:35:-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3714:126:80:-;3803:16;;3821:11;;3714:126;;;-1:-1:-1;;;;;3803:16:80;;;3979:51:114;;3821:11:80;;;;4061:2:114;4046:18;;4039:60;3952:18;3714:126:80;3805:300:114;6383:126:80;;;:::i;1923:626:37:-;;;;;;:::i;:::-;;:::i;3987:149:35:-;;;;;;:::i;:::-;;:::i;1293:35:80:-;;1327:1;1293:35;;2158:98:35;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;734:10:42;4581:32:35;734:10:42;4597:7:35;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;734:10:42;5356:38:35;5372:4;734:10:42;5387:6:35;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:35;;5203:256;-1:-1:-1;;;;5203:256:35:o;3288:235:80:-;-1:-1:-1;;;;;3357:26:80;;3365:1;3357:26;3353:60;;3392:21;;-1:-1:-1;;;3392:21:80;;;;;;;;;;;3353:60;3427:11;;-1:-1:-1;;;;;3427:11:80;:25;3423:57;;3461:19;;-1:-1:-1;;;3461:19:80;;;;;;;;;;;3423:57;3490:11;:26;;-1:-1:-1;;;;;;3490:26:80;-1:-1:-1;;;;;3490:26:80;;;;;;;;;;3288:235::o;2836:113:37:-;2896:7;2922:20;:18;:20::i;:::-;2915:27;;2836:113;:::o;3981:116:80:-;4024:7;1492:4;4050:19;;:40;;;;:::i;5854:234:35:-;5942:4;734:10:42;5996:64:35;734:10:42;6012:7:35;6049:10;6021:25;734:10:42;6012:7:35;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;2663:265:80:-;-1:-1:-1;;;;;2742:31:80;;2750:1;2742:31;2738:65;;2782:21;;-1:-1:-1;;;2782:21:80;;;;;;;;;;;2738:65;2817:16;;-1:-1:-1;;;;;2817:16:80;:30;2813:62;;2856:19;;-1:-1:-1;;;2856:19:80;;;;;;;;;;;2813:62;2885:16;:36;;-1:-1:-1;;;;;;2885:36:80;-1:-1:-1;;;;;2885:36:80;;;;;;;;;;2663:265::o;5478:496::-;1962:16;;-1:-1:-1;;;;;1962:16:80;1940:10;:39;1932:74;;;;-1:-1:-1;;;1932:74:80;;;;;;;:::i;:::-;;;;;;;;;5553:11;;5549:419:::1;;5678:11;::::0;-1:-1:-1;;;;;5678:11:80::1;5639:26;3519:18:35::0;;;;;;;;;;;5708:22:80;;5704:199:::1;;5750:19;5820:18;5804:13;3342:12:35::0;;;3255:106;5804:13:80::1;:34;;;;:::i;:::-;5772:28;5793:7:::0;5772:18;:28:::1;:::i;:::-;:67;;;;:::i;:::-;5863:11;::::0;5750:89;;-1:-1:-1;5857:31:80::1;::::0;-1:-1:-1;;;;;5863:11:80::1;5750:89:::0;5857:5:::1;:31::i;:::-;5732:171;5704:199;5930:16;::::0;5916:41:::1;::::0;-1:-1:-1;;;;;5930:16:80::1;5949:7:::0;5916:5:::1;:41::i;:::-;5566:402;5549:419;5478:496:::0;:::o;2603:126:37:-;-1:-1:-1;;;;;2698:14:37;;2672:7;2698:14;;;:7;:14;;;;;918::43;2698:24:37;827:112:43;5021:633:48;5136:13;5163:18;;5136:13;;;5163:18;5427:41;:5;5454:13;5427:26;:41::i;:::-;5482:47;:8;5512:16;5482:29;:47::i;:::-;5621:16;;;5605:1;5621:16;;;;;;;;;-1:-1:-1;;;5376:271:48;;;-1:-1:-1;5376:271:48;;-1:-1:-1;5543:13:48;;-1:-1:-1;5578:4:48;;-1:-1:-1;5605:1:48;-1:-1:-1;5621:16:48;-1:-1:-1;5376:271:48;-1:-1:-1;5021:633:48:o;2369:102:35:-;2425:13;2457:7;2450:14;;;;;:::i;6092:117:80:-;1962:16;;-1:-1:-1;;;;;1962:16:80;1940:10;:39;1932:74;;;;-1:-1:-1;;;1932:74:80;;;;;;;:::i;:::-;6177:19:::1;:25:::0;6092:117::o;4453:598::-;1962:16;;-1:-1:-1;;;;;1962:16:80;1940:10;:39;1932:74;;;;-1:-1:-1;;;1932:74:80;;;;;;;:::i;:::-;4528:11;;4524:422:::1;;4662:11;::::0;-1:-1:-1;;;;;4662:11:80::1;4623:26;3519:18:35::0;;;;;;;;;;;4692:22:80;;4688:193:::1;;4734:16;4801:18;4785:13;3342:12:35::0;;;3255:106;4785:13:80::1;:34;;;;:::i;:::-;4753:28;4774:7:::0;4753:18;:28:::1;:::i;:::-;:67;;;;:::i;:::-;4844:11;::::0;4734:86;;-1:-1:-1;4838:28:80::1;::::0;-1:-1:-1;;;;;4844:11:80::1;4734:86:::0;4838:5:::1;:28::i;:::-;4716:165;4688:193;4908:16;::::0;4894:41:::1;::::0;-1:-1:-1;;;;;4908:16:80::1;4927:7:::0;4894:5:::1;:41::i;:::-;4541:405;4524:422;4959:19;;4982:1;4959:24:::0;4955:90:::1;;3342:12:35::0;;4999:19:80::1;:35:::0;4453:598;:::o;6575:427:35:-;6668:4;734:10:42;6668:4:35;6749:25;734:10:42;6766:7:35;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:35;;7143:2:114;6784:85:35;;;7125:21:114;7182:2;7162:18;;;7155:30;7221:34;7201:18;;;7194:62;-1:-1:-1;;;7272:18:114;;;7265:35;7317:19;;6784:85:35;6941:401:114;6784:85:35;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;734:10:42;3873:28:35;734:10:42;3890:2:35;3894:6;3873:9;:28::i;6383:126:80:-;6485:16;;-1:-1:-1;;;;;6485:16:80;6433:7;3519:18:35;;;;;;;;;;;3342:12;;6459:43:80;;;;:::i;1923:626:37:-;2158:8;2139:15;:27;;2131:69;;;;-1:-1:-1;;;2131:69:37;;7549:2:114;2131:69:37;;;7531:21:114;7588:2;7568:18;;;7561:30;7627:31;7607:18;;;7600:59;7676:18;;2131:69:37;7347:353:114;2131:69:37;2211:18;1125:95;2271:5;2278:7;2287:5;2294:16;2304:5;2294:9;:16::i;:::-;2242:79;;;;;;7992:25:114;;;;-1:-1:-1;;;;;8053:32:114;;;8033:18;;;8026:60;8122:32;;;;8102:18;;;8095:60;8171:18;;;8164:34;8214:19;;;8207:35;8258:19;;;8251:35;;;7964:19;;2242:79:37;;;;;;;;;;;;2232:90;;;;;;2211:111;;2333:12;2348:28;2365:10;2348:16;:28::i;:::-;2333:43;;2387:14;2404:28;2418:4;2424:1;2427;2430;2404:13;:28::i;:::-;2387:45;;2460:5;-1:-1:-1;;;;;2450:15:37;:6;-1:-1:-1;;;;;2450:15:37;;2442:58;;;;-1:-1:-1;;;2442:58:37;;8499:2:114;2442:58:37;;;8481:21:114;8538:2;8518:18;;;8511:30;8577:32;8557:18;;;8550:60;8627:18;;2442:58:37;8297:354:114;2442:58:37;2511:31;2520:5;2527:7;2536:5;2511:8;:31::i;:::-;2121:428;;;1923:626;;;;;;;:::o;3987:149:35:-;-1:-1:-1;;;;;4102:18:35;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;10457:340::-;-1:-1:-1;;;;;10558:19:35;;10550:68;;;;-1:-1:-1;;;10550:68:35;;8858:2:114;10550:68:35;;;8840:21:114;8897:2;8877:18;;;8870:30;8936:34;8916:18;;;8909:62;-1:-1:-1;;;8987:18:114;;;8980:34;9031:19;;10550:68:35;8656:400:114;10550:68:35;-1:-1:-1;;;;;10636:21:35;;10628:68;;;;-1:-1:-1;;;10628:68:35;;9263:2:114;10628:68:35;;;9245:21:114;9302:2;9282:18;;;9275:30;9341:34;9321:18;;;9314:62;-1:-1:-1;;;9392:18:114;;;9385:32;9434:19;;10628:68:35;9061:398:114;10628:68:35;-1:-1:-1;;;;;10707:18:35;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1354:25:114;;;10758:32:35;;1327:18:114;10758:32:35;;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;-1:-1:-1;;11244:16:35;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:35;;9666:2:114;11297:68:35;;;9648:21:114;9705:2;9685:18;;;9678:30;9744:31;9724:18;;;9717:59;9793:18;;11297:68:35;9464:353:114;11297:68:35;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:35;;7544:68;;;;-1:-1:-1;;;7544:68:35;;10024:2:114;7544:68:35;;;10006:21:114;10063:2;10043:18;;;10036:30;10102:34;10082:18;;;10075:62;-1:-1:-1;;;10153:18:114;;;10146:35;10198:19;;7544:68:35;9822:401:114;7544:68:35;-1:-1:-1;;;;;7630:16:35;;7622:64;;;;-1:-1:-1;;;7622:64:35;;10430:2:114;7622:64:35;;;10412:21:114;10469:2;10449:18;;;10442:30;10508:34;10488:18;;;10481:62;-1:-1:-1;;;10559:18:114;;;10552:33;10602:19;;7622:64:35;10228:399:114;7622:64:35;-1:-1:-1;;;;;7768:15:35;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:35;;10834:2:114;7793:72:35;;;10816:21:114;10873:2;10853:18;;;10846:30;10912:34;10892:18;;;10885:62;-1:-1:-1;;;10963:18:114;;;10956:36;11009:19;;7793:72:35;10632:402:114;7793:72:35;-1:-1:-1;;;;;7899:15:35;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1354:25:114;;;8114:13:35;;8163:26;;1327:18:114;8163:26:35;;;;;;;8200:37;9375:659;3695:262:48;3748:7;3779:4;-1:-1:-1;;;;;3788:11:48;3771:28;;:63;;;;;3820:14;3803:13;:31;3771:63;3767:184;;;-1:-1:-1;3857:22:48;;3695:262::o;3767:184::-;3917:23;4054:81;;;1929:95;4054:81;;;12463:25:114;4077:11:48;12504:18:114;;;12497:34;;;;4090:14:48;12547:18:114;;;12540:34;4106:13:48;12590:18:114;;;12583:34;4129:4:48;12633:19:114;;;12626:61;4018:7:48;;12435:19:114;;4054:81:48;;;;;;;;;;;;4044:92;;;;;;4037:99;;3963:180;;9375:659:35;-1:-1:-1;;;;;9458:21:35;;9450:67;;;;-1:-1:-1;;;9450:67:35;;11241:2:114;9450:67:35;;;11223:21:114;11280:2;11260:18;;;11253:30;11319:34;11299:18;;;11292:62;-1:-1:-1;;;11370:18:114;;;11363:31;11411:19;;9450:67:35;11039:397:114;9450:67:35;-1:-1:-1;;;;;9613:18:35;;9588:22;9613:18;;;;;;;;;;;9649:24;;;;9641:71;;;;-1:-1:-1;;;9641:71:35;;11643:2:114;9641:71:35;;;11625:21:114;11682:2;11662:18;;;11655:30;11721:34;11701:18;;;11694:62;-1:-1:-1;;;11772:18:114;;;11765:32;11814:19;;9641:71:35;11441:398:114;9641:71:35;-1:-1:-1;;;;;9746:18:35;;:9;:18;;;;;;;;;;;9767:23;;;9746:44;;9883:12;:22;;;;;;;9931:37;1354:25:114;;;9746:9:35;;:18;9931:37;;1327:18:114;9931:37:35;1208:177:114;3367:268:44;3461:13;1371:66;3490:47;;3486:143;;3560:15;3569:5;3560:8;:15::i;:::-;3553:22;;;;3486:143;3613:5;3606:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8520:535:35;-1:-1:-1;;;;;8603:21:35;;8595:65;;;;-1:-1:-1;;;8595:65:35;;12046:2:114;8595:65:35;;;12028:21:114;12085:2;12065:18;;;12058:30;12124:33;12104:18;;;12097:61;12175:18;;8595:65:35;11844:355:114;8595:65:35;8747:6;8731:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8899:18:35;;:9;:18;;;;;;;;;;;:28;;;;;;8952:37;1354:25:114;;;8952:37:35;;1327:18:114;8952:37:35;;;;;;;9000:48;9375:659;3080:203:37;-1:-1:-1;;;;;3200:14:37;;3140:15;3200:14;;;:7;:14;;;;;918::43;;1050:1;1032:19;;;;918:14;3259:17:37;3157:126;3080:203;;;:::o;4768:165:48:-;4845:7;4871:55;4893:20;:18;:20::i;:::-;4915:10;8536:4:47;8530:11;-1:-1:-1;;;8554:23:47;;8606:4;8597:14;;8590:39;;;;8658:4;8649:14;;8642:34;8712:4;8697:20;;;8336:397;6598:232;6683:7;6703:17;6722:18;6744:25;6755:4;6761:1;6764;6767;6744:10;:25::i;:::-;6702:67;;;;6779:18;6791:5;6779:11;:18::i;:::-;-1:-1:-1;6814:9:47;6598:232;-1:-1:-1;;;;;6598:232:47:o;2059:405:44:-;2118:13;2143:11;2157:16;2168:4;2157:10;:16::i;:::-;2281:14;;;2292:2;2281:14;;;;;;;;;2143:30;;-1:-1:-1;2261:17:44;;2281:14;;;;;;;;;-1:-1:-1;;;2371:16:44;;;-1:-1:-1;2416:4:44;2407:14;;2400:28;;;;-1:-1:-1;2371:16:44;2059:405::o;5009:1456:47:-;5097:7;;6021:66;6008:79;;6004:161;;;-1:-1:-1;6119:1:47;;-1:-1:-1;6123:30:47;6103:51;;6004:161;6276:24;;;6259:14;6276:24;;;;;;;;;12925:25:114;;;12998:4;12986:17;;12966:18;;;12959:45;;;;13020:18;;;13013:34;;;13063:18;;;13056:34;;;6276:24:47;;12897:19:114;;6276:24:47;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6276:24:47;;-1:-1:-1;;6276:24:47;;;-1:-1:-1;;;;;;;6314:20:47;;6310:101;;6366:1;6370:29;6350:50;;;;;;;6310:101;6429:6;-1:-1:-1;6437:20:47;;-1:-1:-1;5009:1456:47;;;;;;;;:::o;570:511::-;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:441;;570:511;:::o;634:441::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:345;;788:34;;-1:-1:-1;;;788:34:47;;13435:2:114;788:34:47;;;13417:21:114;13474:2;13454:18;;;13447:30;13513:26;13493:18;;;13486:54;13557:18;;788:34:47;13233:348:114;730:345:47;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:236;;903:41;;-1:-1:-1;;;903:41:47;;13788:2:114;903:41:47;;;13770:21:114;13827:2;13807:18;;;13800:30;13866:33;13846:18;;;13839:61;13917:18;;903:41:47;13586:355:114;839:236:47;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:114;;1020:44;;-1:-1:-1;;;1020:44:47;;14148:2:114;1020:44:47;;;14130:21:114;14187:2;14167:18;;;14160:30;14226:34;14206:18;;;14199:62;-1:-1:-1;;;14277:18:114;;;14270:32;14319:19;;1020:44:47;13946:398:114;2536:245:44;2597:7;2669:4;2633:40;;2696:2;2687:11;;2683:69;;;2721:20;;-1:-1:-1;;;2721:20:44;;;;;;;;;;;14:289:114;56:3;94:5;88:12;121:6;116:3;109:19;177:6;170:4;163:5;159:16;152:4;147:3;143:14;137:47;229:1;222:4;213:6;208:3;204:16;200:27;193:38;292:4;285:2;281:7;276:2;268:6;264:15;260:29;255:3;251:39;247:50;240:57;;;14:289;;;;:::o;308:220::-;457:2;446:9;439:21;420:4;477:45;518:2;507:9;503:18;495:6;477:45;:::i;:::-;469:53;308:220;-1:-1:-1;;;308:220:114:o;533:173::-;601:20;;-1:-1:-1;;;;;650:31:114;;640:42;;630:70;;696:1;693;686:12;630:70;533:173;;;:::o;711:300::-;779:6;787;840:2;828:9;819:7;815:23;811:32;808:52;;;856:1;853;846:12;808:52;879:29;898:9;879:29;:::i;:::-;869:39;977:2;962:18;;;;949:32;;-1:-1:-1;;;711:300:114:o;1390:374::-;1467:6;1475;1483;1536:2;1524:9;1515:7;1511:23;1507:32;1504:52;;;1552:1;1549;1542:12;1504:52;1575:29;1594:9;1575:29;:::i;:::-;1565:39;;1623:38;1657:2;1646:9;1642:18;1623:38;:::i;:::-;1390:374;;1613:48;;-1:-1:-1;;;1730:2:114;1715:18;;;;1702:32;;1390:374::o;1769:186::-;1828:6;1881:2;1869:9;1860:7;1856:23;1852:32;1849:52;;;1897:1;1894;1887:12;1849:52;1920:29;1939:9;1920:29;:::i;2331:226::-;2390:6;2443:2;2431:9;2422:7;2418:23;2414:32;2411:52;;;2459:1;2456;2449:12;2411:52;-1:-1:-1;2504:23:114;;2331:226;-1:-1:-1;2331:226:114:o;2562:1238::-;2968:3;2963;2959:13;2951:6;2947:26;2936:9;2929:45;3010:3;3005:2;2994:9;2990:18;2983:31;2910:4;3037:46;3078:3;3067:9;3063:19;3055:6;3037:46;:::i;:::-;3131:9;3123:6;3119:22;3114:2;3103:9;3099:18;3092:50;3165:33;3191:6;3183;3165:33;:::i;:::-;3229:2;3214:18;;3207:34;;;-1:-1:-1;;;;;3278:32:114;;3272:3;3257:19;;3250:61;3298:3;3327:19;;3320:35;;;3392:22;;;3386:3;3371:19;;3364:51;3464:13;;3486:22;;;3536:2;3562:15;;;;-1:-1:-1;3524:15:114;;;;-1:-1:-1;3605:169:114;3619:6;3616:1;3613:13;3605:169;;;3680:13;;3668:26;;3723:2;3749:15;;;;3714:12;;;;3641:1;3634:9;3605:169;;;-1:-1:-1;3791:3:114;;2562:1238;-1:-1:-1;;;;;;;;;;;2562:1238:114:o;4110:903::-;4221:6;4229;4237;4245;4253;4261;4269;4322:3;4310:9;4301:7;4297:23;4293:33;4290:53;;;4339:1;4336;4329:12;4290:53;4362:29;4381:9;4362:29;:::i;:::-;4352:39;;4410:38;4444:2;4433:9;4429:18;4410:38;:::i;:::-;4400:48;-1:-1:-1;4517:2:114;4502:18;;4489:32;;-1:-1:-1;4618:2:114;4603:18;;4590:32;;-1:-1:-1;4700:3:114;4685:19;;4672:33;4749:4;4736:18;;4724:31;;4714:59;;4769:1;4766;4759:12;4714:59;4110:903;;;;-1:-1:-1;4110:903:114;;;;4792:7;4872:3;4857:19;;4844:33;;-1:-1:-1;4976:3:114;4961:19;;;4948:33;;4110:903;-1:-1:-1;;4110:903:114:o;5018:260::-;5086:6;5094;5147:2;5135:9;5126:7;5122:23;5118:32;5115:52;;;5163:1;5160;5153:12;5115:52;5186:29;5205:9;5186:29;:::i;:::-;5176:39;;5234:38;5268:2;5257:9;5253:18;5234:38;:::i;:::-;5224:48;;5018:260;;;;;:::o;5283:380::-;5362:1;5358:12;;;;5405;;;5426:61;;5480:4;5472:6;5468:17;5458:27;;5426:61;5533:2;5525:6;5522:14;5502:18;5499:38;5496:161;;5579:10;5574:3;5570:20;5567:1;5560:31;5614:4;5611:1;5604:15;5642:4;5639:1;5632:15;5668:127;5729:10;5724:3;5720:20;5717:1;5710:31;5760:4;5757:1;5750:15;5784:4;5781:1;5774:15;5800:217;5840:1;5866;5856:132;;5910:10;5905:3;5901:20;5898:1;5891:31;5945:4;5942:1;5935:15;5973:4;5970:1;5963:15;5856:132;-1:-1:-1;6002:9:114;;5800:217::o;6022:125::-;6087:9;;;6108:10;;;6105:36;;;6121:18;;:::i;6152:346::-;6354:2;6336:21;;;6393:2;6373:18;;;6366:30;-1:-1:-1;;;6427:2:114;6412:18;;6405:52;6489:2;6474:18;;6152:346::o;6503:128::-;6570:9;;;6591:11;;;6588:37;;;6605:18;;:::i;6636:168::-;6709:9;;;6740;;6757:15;;;6751:22;;6737:37;6727:71;;6778:18;;:::i;13101:127::-;13162:10;13157:3;13153:20;13150:1;13143:31;13193:4;13190:1;13183:15;13217:4;13214:1;13207:15","linkReferences":{},"immutableReferences":{"53114":[{"start":3448,"length":32}],"53116":[{"start":3406,"length":32}],"53118":[{"start":3364,"length":32}],"53120":[{"start":3529,"length":32}],"53122":[{"start":3569,"length":32}],"53125":[{"start":1579,"length":32}],"53128":[{"start":1622,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","VERSION()":"ffa1ad74","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","eip712Domain()":"84b0196e","increaseAllowance(address,uint256)":"39509351","minStake()":"375b3c0a","mint(uint256)":"a0712d68","name()":"06fdde03","nonces(address)":"7ecebe00","outstandingSupply()":"caacafe2","peripheryContracts()":"b79be3f0","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","previousTotalSupply()":"80ba0f0f","setLiquidityManager(address)":"3c1624d4","setPreviousTotalSupply(uint256)":"9c547c4b","setStakingPool(address)":"3028f63a","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AddressAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressInSetter\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"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\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outstandingSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"peripheryContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previousTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidityManager_\",\"type\":\"address\"}],\"name\":\"setLiquidityManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ts\",\"type\":\"uint256\"}],\"name\":\"setPreviousTotalSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingPool_\",\"type\":\"address\"}],\"name\":\"setStakingPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"details\":\"Key features: - Controlled minting exclusively by LiquidityManager - Tax collection and redistribution mechanism through staking pool - 20% supply cap for staking (20,000 positions max) - Staking pool receives proportional share of all mints/burns\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"When tokens are burned, the total supply shrinks, making excess tokens in the staking pool unnecessary. These excess tokens are burned to maintain the guaranteed fixed percentage of the total supply for stakers.\",\"params\":{\"_amount\":\"The number of tokens to burn.\"}},\"constructor\":{\"params\":{\"name_\":\"The name of the token\",\"symbol_\":\"The symbol of the token\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"eip712Domain()\":{\"details\":\"See {EIP-5267}. _Available since v4.9._\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"minStake()\":{\"returns\":{\"_0\":\"The minimum stake amount\"}},\"mint(uint256)\":{\"details\":\"Tokens minted are managed as community liquidity in the Uniswap pool to stabilize KRAIKEN prices. Only callable by the Liquidity Manager. Minting rules and limits are defined externally.\",\"params\":{\"_amount\":\"The number of tokens to mint.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"outstandingSupply()\":{\"returns\":{\"_0\":\"The outstanding supply\"}},\"peripheryContracts()\":{\"returns\":{\"_0\":\"The addresses of the TWAB controller, liquidity manager, staking pool, and liquidity pool\"}},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"setLiquidityManager(address)\":{\"details\":\"Should be called only once right after the contract deployment to set the liquidity manager address. Throws AddressAlreadySet if called more than once.\",\"params\":{\"liquidityManager_\":\"The address of the liquidity manager.\"}},\"setPreviousTotalSupply(uint256)\":{\"params\":{\"_ts\":\"The previous total supply value\"}},\"setStakingPool(address)\":{\"details\":\"Should be called only once right after the contract deployment to set the staking pool address. Throws AddressAlreadySet if called more than once.\",\"params\":{\"stakingPool_\":\"The address of the staking pool.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"title\":\"stakeable ERC20 Token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"VERSION()\":{\"notice\":\"Protocol version for data structure compatibility. Increment when making breaking changes to TAX_RATES, events, or core data structures. Indexers and frontends validate against this to ensure sync. Version History: - v1: Initial deployment with 30-tier TAX_RATES - v2: OptimizerV3, VWAP mirror floor, directional VWAP recording\"},\"burn(uint256)\":{\"notice\":\"Allows the liquidity manager to burn tokens from its account, adjusting the staking pool accordingly.\"},\"constructor\":{\"notice\":\"Constructor for the Kraiken token\"},\"minStake()\":{\"notice\":\"Calculates the minimum stake based on the previous total supply\"},\"mint(uint256)\":{\"notice\":\"Allows the liquidity manager to mint tokens for itself.\"},\"outstandingSupply()\":{\"notice\":\"Returns the outstanding supply, excluding the balances of the liquidity pool and liquidity manager\"},\"peripheryContracts()\":{\"notice\":\"Returns the addresses of the periphery contracts\"},\"setLiquidityManager(address)\":{\"notice\":\"Sets the address for the liquidityManager. Used once post-deployment to initialize the contract.\"},\"setPreviousTotalSupply(uint256)\":{\"notice\":\"Sets the previous total supply\"},\"setStakingPool(address)\":{\"notice\":\"Sets the address for the stakingPool. Used once post-deployment to initialize the contract.\"}},\"notice\":\"This contract implements an ERC20 token with mechanisms for minting and burning in which a single account (staking Pool) is proportionally receiving a share. Only the liquidity manager has permission to manage token supply.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Kraiken.sol\":\"Kraiken\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@aperture/uni-v3-lib/=lib/uni-v3-lib/src/\",\":@openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":@uniswap-v3-core/=lib/uni-v3-lib/node_modules/@uniswap/v3-core/contracts/\",\":@uniswap-v3-periphery/=lib/uni-v3-lib/node_modules/@uniswap/v3-periphery/contracts/\",\":@uniswap/=lib/uni-v3-lib/node_modules/@uniswap/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":base64-sol/=lib/uni-v3-lib/node_modules/base64-sol/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pt-v5-twab-controller/=lib/pt-v5-twab-controller/src/\",\":ring-buffer-lib/=lib/pt-v5-twab-controller/lib/ring-buffer-lib/src/\",\":solady/=lib/uni-v3-lib/node_modules/solady/\",\":solmate/=lib/solmate/src/\",\":uni-v3-lib/=lib/uni-v3-lib/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e416a280c610b6b7a5f158e4a41aacfaec01ef14d5d1de13b46be9e090265fc\",\"dweb:/ipfs/QmYZP2KrdyccBbhLZT42auhvBTMkwiwUS3V6HWb42rbwbG\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15\",\"dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xbb16110ffe0b625944fe7dd97adcf1158e514185c956a5628bc09be90d606174\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5b412e554a4dd37a50f89ffcd7b9a6ef2ae5064f37619f89343b23d58ce89ca\",\"dweb:/ipfs/QmPWMdBvdFk8WBVv625wd1Ar7aehnBWtj1XfFRrRL5KpxJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"lib/openzeppelin-contracts/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04db5bc05dcb05ba1f6ca2dfbead17adc8a2e2f911aa80b05e7a36d9eaf96516\",\"dweb:/ipfs/QmVkfHZbXVBUPsTopueCn3qGJX8aEjahFF3Fn4NcygLNm5\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x8432884527a7ad91e6eed1cfc5a0811ae2073e5bca107bd0ca442e9236b03dbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3aa0eadab7aafcf91a95684765f778f64386f0368de88522ce873c21385278a\",\"dweb:/ipfs/QmPfaVAqWgH1QsT3dHVuL6jwMZbVKdoP8w1PvpiPT2FPWd\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/Kraiken.sol\":{\"keccak256\":\"0x1c942bc6eacd6f413c7e58e5d313e0a0b6ec642b4fcf28aedc7990f35df1d291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ba5284cf487489f6e33015ffcabafed502462e6ec27683e782066cc98cf861f\",\"dweb:/ipfs/Qme8uPk4hQPNDqMYG2NVxhwpCuq2a32mQbsTk4sdHPPhjx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AddressAlreadySet"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[],"type":"error","name":"ZeroAddressInSetter"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VERSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"outstandingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"peripheryContracts","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"previousTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"liquidityManager_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setLiquidityManager"},{"inputs":[{"internalType":"uint256","name":"_ts","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPreviousTotalSupply"},{"inputs":[{"internalType":"address","name":"stakingPool_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingPool"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"details":"When tokens are burned, the total supply shrinks, making excess tokens in the staking pool unnecessary. These excess tokens are burned to maintain the guaranteed fixed percentage of the total supply for stakers.","params":{"_amount":"The number of tokens to burn."}},"constructor":{"params":{"name_":"The name of the token","symbol_":"The symbol of the token"}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"eip712Domain()":{"details":"See {EIP-5267}. _Available since v4.9._"},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"minStake()":{"returns":{"_0":"The minimum stake amount"}},"mint(uint256)":{"details":"Tokens minted are managed as community liquidity in the Uniswap pool to stabilize KRAIKEN prices. Only callable by the Liquidity Manager. Minting rules and limits are defined externally.","params":{"_amount":"The number of tokens to mint."}},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"outstandingSupply()":{"returns":{"_0":"The outstanding supply"}},"peripheryContracts()":{"returns":{"_0":"The addresses of the TWAB controller, liquidity manager, staking pool, and liquidity pool"}},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"setLiquidityManager(address)":{"details":"Should be called only once right after the contract deployment to set the liquidity manager address. Throws AddressAlreadySet if called more than once.","params":{"liquidityManager_":"The address of the liquidity manager."}},"setPreviousTotalSupply(uint256)":{"params":{"_ts":"The previous total supply value"}},"setStakingPool(address)":{"details":"Should be called only once right after the contract deployment to set the staking pool address. Throws AddressAlreadySet if called more than once.","params":{"stakingPool_":"The address of the staking pool."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{"VERSION()":{"notice":"Protocol version for data structure compatibility. Increment when making breaking changes to TAX_RATES, events, or core data structures. Indexers and frontends validate against this to ensure sync. Version History: - v1: Initial deployment with 30-tier TAX_RATES - v2: OptimizerV3, VWAP mirror floor, directional VWAP recording"},"burn(uint256)":{"notice":"Allows the liquidity manager to burn tokens from its account, adjusting the staking pool accordingly."},"constructor":{"notice":"Constructor for the Kraiken token"},"minStake()":{"notice":"Calculates the minimum stake based on the previous total supply"},"mint(uint256)":{"notice":"Allows the liquidity manager to mint tokens for itself."},"outstandingSupply()":{"notice":"Returns the outstanding supply, excluding the balances of the liquidity pool and liquidity manager"},"peripheryContracts()":{"notice":"Returns the addresses of the periphery contracts"},"setLiquidityManager(address)":{"notice":"Sets the address for the liquidityManager. Used once post-deployment to initialize the contract."},"setPreviousTotalSupply(uint256)":{"notice":"Sets the previous total supply"},"setStakingPool(address)":{"notice":"Sets the address for the stakingPool. Used once post-deployment to initialize the contract."}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@aperture/uni-v3-lib/=lib/uni-v3-lib/src/","@openzeppelin/=lib/openzeppelin-contracts/contracts/","@uniswap-v3-core/=lib/uni-v3-lib/node_modules/@uniswap/v3-core/contracts/","@uniswap-v3-periphery/=lib/uni-v3-lib/node_modules/@uniswap/v3-periphery/contracts/","@uniswap/=lib/uni-v3-lib/node_modules/@uniswap/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","base64-sol/=lib/uni-v3-lib/node_modules/base64-sol/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pt-v5-twab-controller/=lib/pt-v5-twab-controller/src/","ring-buffer-lib/=lib/pt-v5-twab-controller/lib/ring-buffer-lib/src/","solady/=lib/uni-v3-lib/node_modules/solady/","solmate/=lib/solmate/src/","uni-v3-lib/=lib/uni-v3-lib/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Kraiken.sol":"Kraiken"},"evmVersion":"prague","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f","urls":["bzz-raw://6e416a280c610b6b7a5f158e4a41aacfaec01ef14d5d1de13b46be9e090265fc","dweb:/ipfs/QmYZP2KrdyccBbhLZT42auhvBTMkwiwUS3V6HWb42rbwbG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c","urls":["bzz-raw://cac938788bc4be12101e59d45588b4e059579f4e61062e1cda8d6b06c0191b15","dweb:/ipfs/QmV2JKCyjTVH3rkWNrfdJRhAT7tZ3usAN2XcnD4h53Mvih"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol":{"keccak256":"0xbb16110ffe0b625944fe7dd97adcf1158e514185c956a5628bc09be90d606174","urls":["bzz-raw://b5b412e554a4dd37a50f89ffcd7b9a6ef2ae5064f37619f89343b23d58ce89ca","dweb:/ipfs/QmPWMdBvdFk8WBVv625wd1Ar7aehnBWtj1XfFRrRL5KpxJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69","urls":["bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71","dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439","urls":["bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c","dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Counters.sol":{"keccak256":"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1","urls":["bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee","dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol":{"keccak256":"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256","urls":["bzz-raw://04db5bc05dcb05ba1f6ca2dfbead17adc8a2e2f911aa80b05e7a36d9eaf96516","dweb:/ipfs/QmVkfHZbXVBUPsTopueCn3qGJX8aEjahFF3Fn4NcygLNm5"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899","urls":["bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da","dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0","urls":["bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f","dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58","urls":["bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2","dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x8432884527a7ad91e6eed1cfc5a0811ae2073e5bca107bd0ca442e9236b03dbd","urls":["bzz-raw://e3aa0eadab7aafcf91a95684765f778f64386f0368de88522ce873c21385278a","dweb:/ipfs/QmPfaVAqWgH1QsT3dHVuL6jwMZbVKdoP8w1PvpiPT2FPWd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"src/Kraiken.sol":{"keccak256":"0x1c942bc6eacd6f413c7e58e5d313e0a0b6ec642b4fcf28aedc7990f35df1d291","urls":["bzz-raw://8ba5284cf487489f6e33015ffcabafed502462e6ec27683e782066cc98cf861f","dweb:/ipfs/Qme8uPk4hQPNDqMYG2NVxhwpCuq2a32mQbsTk4sdHPPhjx"],"license":"GPL-3.0-or-later"}},"version":1},"id":80}