[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_supply", "type": "uint256" }, { "internalType": "address", "name": "_stratosphereAddress", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_tradingStartsAt", "type": "uint256" }, { "internalType": "address", "name": "_dexAggregator", "type": "address" }, { "internalType": "address", "name": "_dexAdapter", "type": "address" }, { "internalType": "address", "name": "_deployer", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "ERC20Token__ExceedsMaximumHolding", "type": "error" }, { "inputs": [], "name": "ERC20Token__MissingLiquidityPool", "type": "error" }, { "inputs": [], "name": "ERC20Token__NonStratosphereNFTHolder", "type": "error" }, { "inputs": [], "name": "ERC20Token__TradingNotStarted", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": [ { "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": "value", "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deployer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dexAdapter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dexAggregator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": [], "name": "liquidityPool", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxHoldingAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "owner", "outputs": [ { "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": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidityPool", "type": "address" } ], "name": "setLiquidityPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stratosphere", "outputs": [ { "internalType": "contract IStratosphere", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingStartsAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "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": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61020060405234801561001157600080fd5b5060405161263438038061263483398101604081905261003091610769565b848980604051806040016040528060018152602001603160f81b8152508c8c816003908161005e91906108bd565b50600461006b82826108bd565b5061007b915083905060056101bd565b6101205261008a8160066101bd565b61014052815160208084019190912060e052815190820120610100524660a05261011760e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b03811661015057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610159816101f0565b506001600160a01b0386166101e0526101723388610242565b61017d87606461027c565b6101a0526101c0939093526001600160a01b0391821661016052811661018052600980546001600160a01b0319169190921617905550610a619350505050565b60006020835110156101d9576101d28361029c565b90506101ea565b816101e484826108bd565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661026c5760405163ec442f0560e01b815260006004820152602401610147565b610278600083836102da565b5050565b600061271061028b8385610992565b61029591906109a9565b9392505050565b600080829050601f815111156102c7578260405163305a27a960e01b815260040161014791906109cb565b80516102d2826109fe565b179392505050565b6102e583838361042c565b6101c051600a546001600160a01b0316610380576008546001600160a01b038581169116148061032257506008546001600160a01b038481169116145b61037a5760405162461bcd60e51b815260206004820152602360248201527f50617469656e6365202d2054726164696e67204e6f742053746172746564205960448201526265742160e81b6064820152608401610147565b50505050565b804210156103a15760405163063e8a1760e11b815260040160405180910390fd5b60006103ad8242610a22565b9050620151808111156103c1575050505050565b610e10811015610410576103d58484610556565b6103de856105ba565b80156103ee57506103ee846105ba565b61040b576040516324b5c70d60e21b815260040160405180910390fd5b610425565b62015180811015610425576104258484610556565b5050505050565b6001600160a01b03831661045757806002600082825461044c9190610a35565b909155506104c99050565b6001600160a01b038316600090815260208190526040902054818110156104aa5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610147565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104e557600280548290039055610504565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161054991815260200190565b60405180910390a3505050565b600a546001600160a01b03838116911614610278576001600160a01b03821660009081526020819052604081205461058f908390610a35565b90506101a0518111156105b55760405163065234eb60e31b815260040160405180910390fd5b505050565b6000610160516001600160a01b0316826001600160a01b031614806105f35750610180516001600160a01b0316826001600160a01b0316145b8061066b57506101e051604051631dcf00b560e21b81526001600160a01b0384811660048301529091169063773c02d490602401602060405180830381865afa158015610644573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106689190610a48565b15155b806106835750600a546001600160a01b038381169116145b1561068c575060015b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156106c25781810151838201526020016106aa565b50506000910152565b600082601f8301126106dc57600080fd5b81516001600160401b03808211156106f6576106f6610691565b604051601f8301601f19908116603f0116810190828211818310171561071e5761071e610691565b8160405283815286602085880101111561073757600080fd5b6107488460208301602089016106a7565b9695505050505050565b80516001600160a01b038116811461068c57600080fd5b60008060008060008060008060006101208a8c03121561078857600080fd5b89516001600160401b038082111561079f57600080fd5b6107ab8d838e016106cb565b9a5060208c01519150808211156107c157600080fd5b506107ce8c828d016106cb565b98505060408a015196506107e460608b01610752565b95506107f260808b01610752565b945060a08a0151935061080760c08b01610752565b925061081560e08b01610752565b91506108246101008b01610752565b90509295985092959850929598565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156105b5576000816000526020600020601f850160051c810160208610156108965750805b601f850160051c820191505b818110156108b5578281556001016108a2565b505050505050565b81516001600160401b038111156108d6576108d6610691565b6108ea816108e48454610833565b8461086d565b602080601f83116001811461091f57600084156109075750858301515b600019600386901b1c1916600185901b1785556108b5565b600085815260208120601f198616915b8281101561094e5788860151825594840194600190910190840161092f565b508582101561096c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101ea576101ea61097c565b6000826109c657634e487b7160e01b600052601260045260246000fd5b500490565b60208152600082518060208401526109ea8160408501602087016106a7565b601f01601f19169190910160400192915050565b805160208083015191908110156108675760001960209190910360031b1b16919050565b818103818111156101ea576101ea61097c565b808201808211156101ea576101ea61097c565b600060208284031215610a5a57600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051611b1f610b1560003960008181610234015261164d0152600081816104460152610e6d015260008181610333015261150301526000818161037801526115b40152600081816102de015261155f01526000610c7901526000610c4c01526000610b7d01526000610b5501526000610ab001526000610ada01526000610b040152611b1f6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637ecebe00116100e3578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e146103e8578063f2fde38b1461042e578063fe4c4af41461044157600080fd5b8063a9059cbb146103a2578063d505accf146103b5578063d5f39488146103c857600080fd5b80638da5cb5b116100bd5780638da5cb5b1461035557806391f03efd1461037357806395d89b411461039a57600080fd5b80637ecebe001461030057806384b0196e1461031357806389f9a1d31461032e57600080fd5b80633644e5151161014557806370a082311161011f57806370a082311461029b578063715018a6146102d15780637c21d5e0146102d957600080fd5b80633644e5151461022757806345d818431461022f578063665a11ca1461027b57600080fd5b806318160ddd1161017657806318160ddd146101f357806323b872dd14610205578063313ce5671461021857600080fd5b8063018770201461019d57806306fdde03146101b2578063095ea7b3146101d0575b600080fd5b6101b06101ab366004611792565b610468565b005b6101ba610504565b6040516101c79190611818565b60405180910390f35b6101e36101de36600461182b565b610596565b60405190151581526020016101c7565b6002545b6040519081526020016101c7565b6101e3610213366004611855565b6105b0565b604051601281526020016101c7565b6101f76105d4565b6102567f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c7565b600a546102569073ffffffffffffffffffffffffffffffffffffffff1681565b6101f76102a9366004611792565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101b06105e3565b6102567f000000000000000000000000000000000000000000000000000000000000000081565b6101f761030e366004611792565b6105f7565b61031b610622565b6040516101c79796959493929190611891565b6101f77f000000000000000000000000000000000000000000000000000000000000000081565b60085473ffffffffffffffffffffffffffffffffffffffff16610256565b6102567f000000000000000000000000000000000000000000000000000000000000000081565b6101ba610684565b6101e36103b036600461182b565b610693565b6101b06103c3366004611953565b6106a1565b6009546102569073ffffffffffffffffffffffffffffffffffffffff1681565b6101f76103f63660046119c6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101b061043c366004611792565b610853565b6101f77f000000000000000000000000000000000000000000000000000000000000000081565b6104706108b7565b73ffffffffffffffffffffffffffffffffffffffff81166104bd576040517f45ce07b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606060038054610513906119f9565b80601f016020809104026020016040519081016040528092919081815260200182805461053f906119f9565b801561058c5780601f106105615761010080835404028352916020019161058c565b820191906000526020600020905b81548152906001019060200180831161056f57829003601f168201915b5050505050905090565b6000336105a481858561090a565b60019150505b92915050565b6000336105be85828561091c565b6105c98585856109eb565b506001949350505050565b60006105de610a96565b905090565b6105eb6108b7565b6105f56000610bce565b565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120546105aa565b600060608060008060006060610636610c45565b61063e610c72565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b606060048054610513906119f9565b6000336105a48185856109eb565b834211156106e3576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861073d8c73ffffffffffffffffffffffffffffffffffffffff16600090815260076020526040902080546001810190915590565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006107a582610c9f565b905060006107b582878787610ce7565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461083c576040517f4b800e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528b1660248201526044016106da565b6108478a8a8a61090a565b50505050505050505050565b61085b6108b7565b73ffffffffffffffffffffffffffffffffffffffff81166108ab576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016106da565b6108b481610bce565b50565b60085473ffffffffffffffffffffffffffffffffffffffff1633146105f5576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016106da565b6109178383836001610d15565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109e557818110156109d6576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064016106da565b6109e584848484036000610d15565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a3b576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016106da565b73ffffffffffffffffffffffffffffffffffffffff8216610a8b576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016106da565b610917838383610e5d565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015610afc57507f000000000000000000000000000000000000000000000000000000000000000046145b15610b2657507f000000000000000000000000000000000000000000000000000000000000000090565b6105de604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606105de7f00000000000000000000000000000000000000000000000000000000000000006005611054565b60606105de7f00000000000000000000000000000000000000000000000000000000000000006006611054565b60006105aa610cac610a96565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600080610cf9888888886110ff565b925092509250610d0982826111f9565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416610d65576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016106da565b73ffffffffffffffffffffffffffffffffffffffff8316610db5576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016106da565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156109e5578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e4f91815260200190565b60405180910390a350505050565b610e68838383611301565b600a547f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16610f765760085473ffffffffffffffffffffffffffffffffffffffff85811691161480610eea575060085473ffffffffffffffffffffffffffffffffffffffff8481169116145b6109e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f50617469656e6365202d2054726164696e67204e6f742053746172746564205960448201527f657421000000000000000000000000000000000000000000000000000000000060648201526084016106da565b80421015610fb0576040517f0c7d142e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610fbc8242611a7b565b905062015180811115610fd0575050505050565b610e1081101561103857610fe484846114ac565b610fed8561155b565b8015610ffd5750610ffd8461155b565b611033576040517f92d71c3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61104d565b6201518081101561104d5761104d84846114ac565b5050505050565b606060ff831461106e57611067836116ee565b90506105aa565b81805461107a906119f9565b80601f01602080910402602001604051908101604052809291908181526020018280546110a6906119f9565b80156110f35780601f106110c8576101008083540402835291602001916110f3565b820191906000526020600020905b8154815290600101906020018083116110d657829003601f168201915b505050505090506105aa565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561113a57506000915060039050826111ef565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561118e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166111e5575060009250600191508290506111ef565b9250600091508190505b9450945094915050565b600082600381111561120d5761120d611a8e565b03611216575050565b600182600381111561122a5761122a611a8e565b03611261576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561127557611275611a8e565b036112af576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016106da565b60038260038111156112c3576112c3611a8e565b036112fd576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016106da565b5050565b73ffffffffffffffffffffffffffffffffffffffff831661133957806002600082825461132e9190611abd565b909155506113eb9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156113bf576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016106da565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661141457600280548290039055611440565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161149f91815260200190565b60405180910390a3505050565b600a5473ffffffffffffffffffffffffffffffffffffffff8381169116146112fd5773ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120546114ff908390611abd565b90507f0000000000000000000000000000000000000000000000000000000000000000811115610917576040517f3291a75800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061160257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806116bb57506040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063773c02d490602401602060405180830381865afa158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b89190611ad0565b15155b806116e05750600a5473ffffffffffffffffffffffffffffffffffffffff8381169116145b156116e9575060015b919050565b606060006116fb8361172d565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f8111156105aa576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146116e957600080fd5b6000602082840312156117a457600080fd5b6117ad8261176e565b9392505050565b6000815180845260005b818110156117da576020818501810151868301820152016117be565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006117ad60208301846117b4565b6000806040838503121561183e57600080fd5b6118478361176e565b946020939093013593505050565b60008060006060848603121561186a57600080fd5b6118738461176e565b92506118816020850161176e565b9150604084013590509250925092565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e060208401526118ce60e084018a6117b4565b83810360408501526118e0818a6117b4565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b8181101561194157835183529284019291840191600101611925565b50909c9b505050505050505050505050565b600080600080600080600060e0888a03121561196e57600080fd5b6119778861176e565b96506119856020890161176e565b95506040880135945060608801359350608088013560ff811681146119a957600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156119d957600080fd5b6119e28361176e565b91506119f06020840161176e565b90509250929050565b600181811c90821680611a0d57607f821691505b602082108103611a46577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105aa576105aa611a4c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b808201808211156105aa576105aa611a4c565b600060208284031215611ae257600080fd5b505191905056fea2646970667358221220d1a51e44c0febb110cf683df66e15a81ae5a51f1f72b66266d84022a876cebc064736f6c63430008190033000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000032945b01bff907bc000000000000000000000000000008e287adcf9bf6773a87e1a278aa9042bef44b600000000000000000000000002606a3095540c49d509baa8e47593f7c8d8f5f16000000000000000000000000000000000000000000000000000000006626d6d800000000000000000000000055477d8537ede381784b448876afaa98aa450e6300000000000000000000000001e5c45cb25e30860c2fb80369a9c27628911a2b000000000000000000000000c2eee2987622547601d377818e527b6aee3e1048000000000000000000000000000000000000000000000000000000000000000f416c7761797320486173204265656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006416c776179730000000000000000000000000000000000000000000000000000