{
  "contractName": "TokenGeyser",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "stakingToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "distributionToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxUnlockSchedules",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "startBonus_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "bonusPeriodSec_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "initialSharesPerToken",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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": false,
          "internalType": "address",
          "name": "oldRewardDistribution",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newRewardDistribution",
          "type": "address"
        }
      ],
      "name": "RewardDistributionRoleTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "total",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TokensClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "durationSec",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "total",
          "type": "uint256"
        }
      ],
      "name": "TokensLocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "total",
          "type": "uint256"
        }
      ],
      "name": "TokensUnlocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "total",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Unstaked",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "BONUS_DECIMALS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "bonusPeriodSec",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getDistributionToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getStakingToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "durationSec",
          "type": "uint256"
        }
      ],
      "name": "lockTokens",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenToRescue",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "rescueFundsFromStakingPool",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "rewardDistribution",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newRewardDistribution",
          "type": "address"
        }
      ],
      "name": "setRewardDistribution",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "stake",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "stakeFor",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "startBonus",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "supportsHistory",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalLocked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalLockedShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalStaked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "totalStakedFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalStakingShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalUnlocked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "unlockScheduleCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "unlockSchedules",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "initialLockedShares",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "unlockedShares",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastUnlockTimestampSec",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endAtSec",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "durationSec",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unlockTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "unstake",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "unstakeQuery",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "updateAccounting",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000600555600060065560006007556000600855600060095542600a556000600b556000600c553480156200003857600080fd5b5060405162002dff38038062002dff833981810160405260c08110156200005e57600080fd5b508051602082015160408301516060840151608085015160a0909501519394929391929091620000966001600160e01b036200030616565b600080546001600160a01b0319166001600160a01b03928316178082556040519216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36064831115620001205760405162461bcd60e51b815260040180806020018281038252602181526020018062002d936021913960400191505060405180910390fd5b816200015e5760405162461bcd60e51b815260040180806020018281038252602181526020018062002dde6021913960400191505060405180910390fd5b600081116200019f5760405162461bcd60e51b815260040180806020018281038252602a81526020018062002db4602a913960400191505060405180910390fd5b85604051620001ae9062000319565b6001600160a01b03909116815260405190819003602001906000f080158015620001dc573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039290921691909117905560405185906200020d9062000319565b6001600160a01b03909116815260405190819003602001906000f0801580156200023b573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b039290921691909117905560405185906200026c9062000319565b6001600160a01b03909116815260405190819003602001906000f0801580156200029a573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b039290921691909117905560058390556006829055600b849055600c819055620002d96200030a565b600480546001600160a01b0319166001600160a01b03929092169190911790555062000327945050505050565b3390565b6000546001600160a01b031690565b610736806200265d83390190565b61232680620003376000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780638f32d59b116100a2578063c8fd6ed011610071578063c8fd6ed0146104d9578063f2fde38b14610550578063f968f49314610576578063fc0c546a1461057e576101cf565b80638f32d59b146104b95780639f9106d1146104c1578063a779d080146104c9578063c7ae2007146104d1576101cf565b806381c39bec116100de57806381c39bec1461046957806386805dd11461047157806389158d8e1461048e5780638da5cb5b146104b1576101cf565b8063715018a6146104515780637c6aa6f414610459578063817b1cd214610461576101cf565b8063494347e7116101715780635a72bbef1161014b5780635a72bbef146103af5780635c94bcb2146103f95780637033e4a61461044157806370c6a17e14610449576101cf565b8063494347e7146103465780634b341aed1461038157806356891412146103a7576101cf565b8063101114cf116101ad578063101114cf146102f85780631dc27fde1461031c57806322c12b841461033657806338b45fde1461033e576101cf565b80630d68b761146101d45780630e89439b146101fc5780630ef9635614610273575b600080fd5b6101fa600480360360208110156101ea57600080fd5b50356001600160a01b0316610586565b005b6101fa6004803603604081101561021257600080fd5b8135919081019060408101602082013564010000000081111561023457600080fd5b82018360208201111561024657600080fd5b8035906020019184600183028401116401000000008311171561026857600080fd5b50909250905061067c565b6101fa6004803603606081101561028957600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156102b957600080fd5b8201836020820111156102cb57600080fd5b803590602001918460018302840111640100000000831117156102ed57600080fd5b50909250905061068c565b6103006106e4565b604080516001600160a01b039092168252519081900360200190f35b6103246106f3565b60408051918252519081900360200190f35b6103006106f8565b61032461086e565b61034e610874565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b6103246004803603602081101561039757600080fd5b50356001600160a01b0316610980565b6103246109c7565b6103e5600480360360608110156103c557600080fd5b506001600160a01b03813581169160208101359091169060400135610a0c565b604080519115158252519081900360200190f35b6104166004803603602081101561040f57600080fd5b5035610ae9565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6103e5610b27565b610324610b2c565b6101fa610b32565b610324610bc3565b610324610bc9565b610324610c0e565b6103246004803603602081101561048757600080fd5b5035610c14565b6101fa600480360360408110156104a457600080fd5b5080359060200135610c1f565b610300610f9f565b6103e5610fae565b610300610fd2565b610324611017565b61032461105c565b6101fa600480360360408110156104ef57600080fd5b8135919081019060408101602082013564010000000081111561051157600080fd5b82018360208201111561052357600080fd5b8035906020019184600183028401116401000000008311171561054557600080fd5b509092509050611062565b6101fa6004803603602081101561056657600080fd5b50356001600160a01b031661106b565b6103246110be565b610300611252565b61058e610fae565b6105cd576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b6001600160a01b0381166106125760405162461bcd60e51b815260040180806020018281038252602b815260200180612297602b913960400191505060405180910390fd5b600454604080516001600160a01b039283168152918316602083015280517f840b9fc77a9405c32398a96e7edbf3be477e284a1f66fe9482c82b359a4baf239281900390910190a1600480546001600160a01b0319166001600160a01b0392909216919091179055565b610687333385611261565b505050565b610694610fae565b6106d3576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b6106de338585611261565b50505050565b6004546001600160a01b031681565b600281565b60035460408051637e062a3560e11b815290516000926001600160a01b03169163fc0c546a916004808301926020929190829003018186803b15801561073d57600080fd5b505afa158015610751573d6000803e3d6000fd5b505050506040513d602081101561076757600080fd5b505160025460408051637e062a3560e11b815290516001600160a01b03938416939092169163fc0c546a91600480820192602092909190829003018186803b1580156107b257600080fd5b505afa1580156107c6573d6000803e3d6000fd5b505050506040513d60208110156107dc57600080fd5b50516001600160a01b0316146107ee57fe5b600260009054906101000a90046001600160a01b03166001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561083c57600080fd5b505afa158015610850573d6000803e3d6000fd5b505050506040513d602081101561086657600080fd5b505190505b90565b60055481565b6000806000806000806108856110be565b5060006108af6008546108a3600a54426115fc90919063ffffffff16565b9063ffffffff61164716565b6009549091506108c5908263ffffffff6116a016565b60095542600a819055336000908152600d602052604081208054600282015491936108fa926108a3919063ffffffff6115fc16565b6001830154909150610912908263ffffffff6116a016565b600183015542600283015560095460009061092e576000610950565b61095060095461094485600101546108a3611017565b9063ffffffff6116fa16565b905061095a6109c7565b610962611017565b600190940154600954919c949b509950975095504294509092505050565b600080600854116109925760006109bf565b6008546001600160a01b0383166000908152600d60205260409020546109bf9190610944906108a3610bc9565b90505b919050565b600354604080516316d3df1560e31b815290516000926001600160a01b03169163b69ef8a8916004808301926020929190829003018186803b15801561083c57600080fd5b6000610a16610fae565b610a55576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b60015460408051631b32b81560e21b81526001600160a01b03878116600483015286811660248301526044820186905291519190921691636ccae0549160648083019260209291908290030181600087803b158015610ab357600080fd5b505af1158015610ac7573d6000803e3d6000fd5b505050506040513d6020811015610add57600080fd5b505190505b9392505050565b600f8181548110610af657fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909185565b600090565b60085481565b610b3a610fae565b610b79576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60065481565b600154604080516316d3df1560e31b815290516000926001600160a01b03169163b69ef8a8916004808301926020929190829003018186803b15801561083c57600080fd5b60075481565b60006109bf8261173c565b6004546001600160a01b03163314610c685760405162461bcd60e51b815260040180806020018281038252602581526020018061211f6025913960400191505060405180910390fd5b600b54600f5410610caa5760405162461bcd60e51b815260040180806020018281038252602d81526020018061226a602d913960400191505060405180910390fd5b610cb2610874565b5050505050506000610cc26109c7565b90506000808211610ce657600c54610ce190859063ffffffff61164716565b610cff565b610cff826109448660075461164790919063ffffffff16565b9050610d09611efc565b8181524260408201819052610d24908563ffffffff6116a016565b6060820190815260808201858152600f805460018101825560009190915283517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80260059092029182015560208401517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80382015560408401517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80482015591517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac805830155517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80690910155600754610e1990836116a0565b60075560035460408051637e062a3560e11b815290516001600160a01b039092169163fc0c546a91600480820192602092909190829003018186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d6020811015610e8b57600080fd5b5051600354604080516323b872dd60e01b81523360048201526001600160a01b03928316602482015260448101899052905191909216916323b872dd9160648083019260209291908290030181600087803b158015610ee957600080fd5b505af1158015610efd573d6000803e3d6000fd5b505050506040513d6020811015610f1357600080fd5b5051610f505760405162461bcd60e51b815260040180806020018281038252602d815260200180611f8e602d913960400191505060405180910390fd5b7ff346961af4c52f314df1b45964746280fe409abb959d4a2458d58f79408b1fe88585610f7b6109c7565b60408051938452602084019290925282820152519081900360600190a15050505050565b6000546001600160a01b031690565b600080546001600160a01b0316610fc3611c0b565b6001600160a01b031614905090565b60015460408051637e062a3560e11b815290516000926001600160a01b03169163fc0c546a916004808301926020929190829003018186803b15801561083c57600080fd5b600254604080516316d3df1560e31b815290516000926001600160a01b03169163b69ef8a8916004808301926020929190829003018186803b15801561083c57600080fd5b600f5490565b6106de8361173c565b611073610fae565b6110b2576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b6110bb81611c0f565b50565b600080806110ca6109c7565b9050600754600014156110df57809150611143565b6000805b600f54811015611110576111066110f982611caf565b839063ffffffff6116a016565b91506001016110e3565b5060075461112890610944838563ffffffff61164716565b60075490935061113e908263ffffffff6115fc16565b600755505b811561124c576003546002546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156111a257600080fd5b505af11580156111b6573d6000803e3d6000fd5b505050506040513d60208110156111cc57600080fd5b50516112095760405162461bcd60e51b815260040180806020018281038252602f8152602001806120ca602f913960400191505060405180910390fd5b7f2e444eb379b177e88ce0649c6110a3b01099f03e297127919dd5e3b63a761a9c826112336109c7565b6040805192835260208301919091528051918290030190a15b50905090565b600061125c610fd2565b905090565b600081116112a05760405162461bcd60e51b81526004018080602001828103825260218152602001806121be6021913960400191505060405180910390fd5b6001600160a01b0382166112e55760405162461bcd60e51b815260040180806020018281038252602881526020018061207f6028913960400191505060405180910390fd5b60085415806112fb575060006112f9610bc9565b115b6113365760405162461bcd60e51b815260040180806020018281038252604a815260200180612220604a913960600191505060405180910390fd5b6000806008541161135a57600c5461135590839063ffffffff61164716565b611378565b611378611365610bc9565b600854610944908563ffffffff61164716565b9050600081116113b95760405162461bcd60e51b81526004018080602001828103825260268152602001806120f96026913960400191505060405180910390fd5b6113c1610874565b505050506001600160a01b0385166000908152600d6020526040902080549092506113ed9150836116a0565b81554260028201556113fd611f2b565b506040805180820182528381524260208083019182526001600160a01b0388166000908152600e8252938420805460018181018355918652919094208351600290920201908155905192019190915560085461145f908463ffffffff6116a016565b60085560015460408051637e062a3560e11b815290516001600160a01b039092169163fc0c546a91600480820192602092909190829003018186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b505050506040513d60208110156114d157600080fd5b5051600154604080516323b872dd60e01b81526001600160a01b038a81166004830152928316602482015260448101889052905191909216916323b872dd9160648083019260209291908290030181600087803b15801561153157600080fd5b505af1158015611545573d6000803e3d6000fd5b505050506040513d602081101561155b57600080fd5b50516115985760405162461bcd60e51b815260040180806020018281038252602e815260200180612190602e913960400191505060405180910390fd5b846001600160a01b03167fc65e53b88159e7d2c0fc12a0600072e28ae53ff73b4c1715369c30f160935142856115cd88610980565b6040805192835260208301919091526060828201819052600090830152519081900360a00190a2505050505050565b600061163e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d72565b90505b92915050565b60008261165657506000611641565b8282028284828161166357fe5b041461163e5760405162461bcd60e51b81526004018080602001828103825260218152602001806121df6021913960400191505060405180910390fd5b60008282018381101561163e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061163e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e09565b6000611746610874565b5050505050506000821161178b5760405162461bcd60e51b81526004018080602001828103825260238152602001806120a76023913960400191505060405180910390fd5b8161179533610980565b10156117d25760405162461bcd60e51b815260040180806020018281038252603d815260200180612042603d913960400191505060405180910390fd5b60006117f26117df610bc9565b600854610944908663ffffffff61164716565b9050600081116118335760405162461bcd60e51b8152600401808060200182810382526030815260200180611fbb6030913960400191505060405180910390fd5b336000908152600d60209081526040808320600e9092528220909183815b81156119565783546000908590600019810190811061186c57fe5b9060005260206000209060020201905060006118958260010154426115fc90919063ffffffff16565b825490915060009085106119035782546118b5908363ffffffff61164716565b90506118c2848284611e6e565b93506118d4868263ffffffff6116a016565b83549096506118ea90869063ffffffff6115fc16565b87549095506118fd886000198301611f45565b5061194e565b611913858363ffffffff61164716565b9050611920848284611e6e565b9350611932868263ffffffff6116a016565b8354909650611947908663ffffffff6115fc16565b8355600094505b505050611851565b600185015461196b908463ffffffff6115fc16565b60018601558454611982908763ffffffff6115fc16565b8555600954611997908463ffffffff6115fc16565b6009556008546119ad908763ffffffff6115fc16565b6008556001546040805163a9059cbb60e01b8152336004820152602481018b905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611a0457600080fd5b505af1158015611a18573d6000803e3d6000fd5b505050506040513d6020811015611a2e57600080fd5b5051611a6b5760405162461bcd60e51b81526004018080602001828103825260308152602001806122c26030913960400191505060405180910390fd5b6002546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611abf57600080fd5b505af1158015611ad3573d6000803e3d6000fd5b505050506040513d6020811015611ae957600080fd5b5051611b265760405162461bcd60e51b81526004018080602001828103825260318152602001806120116031913960400191505060405180910390fd5b337faf01bfc8475df280aca00b578c4a948e6d95700f0db8c13365240f7f973c875489611b5283610980565b6040805192835260208301919091526060828201819052600090830152519081900360a00190a260408051828152905133917f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e430919081900360200190a26008541580611bc557506000611bc3610bc9565b115b611c005760405162461bcd60e51b815260040180806020018281038252604c815260200180612144604c913960600191505060405180910390fd5b979650505050505050565b3390565b6001600160a01b038116611c545760405162461bcd60e51b8152600401808060200182810382526026815260200180611feb6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600f8381548110611cbf57fe5b906000526020600020906005020190508060000154816001015410611ce85760009150506109c2565b60038101546000904210611d1d5760018201548254611d0c9163ffffffff6115fc16565b600383015460028401559050611d4d565b611d44826004015461094484600001546108a38660020154426115fc90919063ffffffff16565b42600284015590505b6001820154611d62908263ffffffff6116a016565b6001909201919091559050919050565b60008184841115611e015760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dc6578181015183820152602001611dae565b50505050905090810190601f168015611df35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611e585760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611dc6578181015183820152602001611dae565b506000838581611e6457fe5b0495945050505050565b600080611e83600954610944866108a3611017565b90506006548310611ea657611e9e858263ffffffff6116a016565b915050610ae2565b60006002600a0a90506000611eea82610944856108a3611edb6006546109448c6108a36005548c6115fc90919063ffffffff16565b6005549063ffffffff6116a016565b9050611c00878263ffffffff6116a016565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b815481835581811115610687576000838152602090206106879161086b9160029182028101918502015b80821115611f895760008082556001820155600201611f6f565b509056fe546f6b656e4765797365723a207472616e7366657220696e746f206c6f636b656420706f6f6c206661696c6564546f6b656e4765797365723a20556e61626c6520746f20756e7374616b6520616d6f756e74207468697320736d616c6c4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373546f6b656e4765797365723a207472616e73666572206f7574206f6620756e6c6f636b656420706f6f6c206661696c6564546f6b656e4765797365723a20756e7374616b6520616d6f756e742069732067726561746572207468616e20746f74616c2075736572207374616b6573546f6b656e4765797365723a2062656e6566696369617279206973207a65726f2061646472657373546f6b656e4765797365723a20756e7374616b6520616d6f756e74206973207a65726f546f6b656e4765797365723a207472616e73666572206f7574206f66206c6f636b656420706f6f6c206661696c6564546f6b656e4765797365723a205374616b6520616d6f756e7420697320746f6f20736d616c6c43616c6c6572206973206e6f74207468652072657761726420646973747269627574696f6e546f6b656e4765797365723a204572726f7220756e7374616b696e672e205374616b696e67207368617265732065786973742c20627574206e6f207374616b696e6720746f6b656e7320646f546f6b656e4765797365723a207472616e7366657220696e746f207374616b696e6720706f6f6c206661696c6564546f6b656e4765797365723a207374616b6520616d6f756e74206973207a65726f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572546f6b656e4765797365723a20496e76616c69642073746174652e205374616b696e67207368617265732065786973742c20627574206e6f207374616b696e6720746f6b656e7320646f546f6b656e4765797365723a2072656163686564206d6178696d756d20756e6c6f636b207363686564756c65734e65772072657761726420646973747269627574696f6e20697320746865207a65726f2061646472657373546f6b656e4765797365723a207472616e73666572206f7574206f66207374616b696e6720706f6f6c206661696c6564a265627a7a72315820112c135de132b5df016c984e1a949c55fe1847c609494d6db1be2cc0a450e08a64736f6c63430005110032608060405234801561001057600080fd5b506040516107363803806107368339818101604052602081101561003357600080fd5b50516100466001600160e01b036100b316565b600080546001600160a01b0319166001600160a01b03928316178082556040519216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b0319166001600160a01b03929092169190911790556100b7565b3390565b610670806100c66000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a9059cbb1161005b578063a9059cbb1461010d578063b69ef8a814610139578063f2fde38b14610153578063fc0c546a1461017957610088565b80636ccae0541461008d578063715018a6146100d75780638da5cb5b146100e15780638f32d59b14610105575b600080fd5b6100c3600480360360608110156100a357600080fd5b506001600160a01b03813581169160208101359091169060400135610181565b604080519115158252519081900360200190f35b6100df6102ab565b005b6100e961033c565b604080516001600160a01b039092168252519081900360200190f35b6100c361034b565b6100c36004803603604081101561012357600080fd5b506001600160a01b03813516906020013561036f565b610141610441565b60408051918252519081900360200190f35b6100df6004803603602081101561016957600080fd5b50356001600160a01b03166104bd565b6100e9610510565b600061018b61034b565b6101ca576040805162461bcd60e51b815260206004820181905260248201526000805160206105ea833981519152604482015290519081900360640190fd5b6001546001600160a01b03858116911614156102175760405162461bcd60e51b815260040180806020018281038252603281526020018061060a6032913960400191505060405180910390fd5b836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561027757600080fd5b505af115801561028b573d6000803e3d6000fd5b505050506040513d60208110156102a157600080fd5b5051949350505050565b6102b361034b565b6102f2576040805162461bcd60e51b815260206004820181905260248201526000805160206105ea833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b031661036061051f565b6001600160a01b031614905090565b600061037961034b565b6103b8576040805162461bcd60e51b815260206004820181905260248201526000805160206105ea833981519152604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561040e57600080fd5b505af1158015610422573d6000803e3d6000fd5b505050506040513d602081101561043857600080fd5b50519392505050565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561048c57600080fd5b505afa1580156104a0573d6000803e3d6000fd5b505050506040513d60208110156104b657600080fd5b5051905090565b6104c561034b565b610504576040805162461bcd60e51b815260206004820181905260248201526000805160206105ea833981519152604482015290519081900360640190fd5b61050d81610523565b50565b6001546001600160a01b031681565b3390565b6001600160a01b0381166105685760405162461bcd60e51b81526004018080602001828103825260268152602001806105c46026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572546f6b656e506f6f6c3a2043616e6e6f7420636c61696d20746f6b656e2068656c642062792074686520636f6e7472616374a265627a7a7231582036acc360bd862e0cf24e7723b0187a63821a2235b26da9a0ffa4ac6b0a82409d64736f6c63430005110032546f6b656e4765797365723a20737461727420626f6e757320746f6f2068696768546f6b656e4765797365723a20696e697469616c536861726573506572546f6b656e206973207a65726f546f6b656e4765797365723a20626f6e757320706572696f64206973207a65726f",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780638f32d59b116100a2578063c8fd6ed011610071578063c8fd6ed0146104d9578063f2fde38b14610550578063f968f49314610576578063fc0c546a1461057e576101cf565b80638f32d59b146104b95780639f9106d1146104c1578063a779d080146104c9578063c7ae2007146104d1576101cf565b806381c39bec116100de57806381c39bec1461046957806386805dd11461047157806389158d8e1461048e5780638da5cb5b146104b1576101cf565b8063715018a6146104515780637c6aa6f414610459578063817b1cd214610461576101cf565b8063494347e7116101715780635a72bbef1161014b5780635a72bbef146103af5780635c94bcb2146103f95780637033e4a61461044157806370c6a17e14610449576101cf565b8063494347e7146103465780634b341aed1461038157806356891412146103a7576101cf565b8063101114cf116101ad578063101114cf146102f85780631dc27fde1461031c57806322c12b841461033657806338b45fde1461033e576101cf565b80630d68b761146101d45780630e89439b146101fc5780630ef9635614610273575b600080fd5b6101fa600480360360208110156101ea57600080fd5b50356001600160a01b0316610586565b005b6101fa6004803603604081101561021257600080fd5b8135919081019060408101602082013564010000000081111561023457600080fd5b82018360208201111561024657600080fd5b8035906020019184600183028401116401000000008311171561026857600080fd5b50909250905061067c565b6101fa6004803603606081101561028957600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156102b957600080fd5b8201836020820111156102cb57600080fd5b803590602001918460018302840111640100000000831117156102ed57600080fd5b50909250905061068c565b6103006106e4565b604080516001600160a01b039092168252519081900360200190f35b6103246106f3565b60408051918252519081900360200190f35b6103006106f8565b61032461086e565b61034e610874565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b6103246004803603602081101561039757600080fd5b50356001600160a01b0316610980565b6103246109c7565b6103e5600480360360608110156103c557600080fd5b506001600160a01b03813581169160208101359091169060400135610a0c565b604080519115158252519081900360200190f35b6104166004803603602081101561040f57600080fd5b5035610ae9565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6103e5610b27565b610324610b2c565b6101fa610b32565b610324610bc3565b610324610bc9565b610324610c0e565b6103246004803603602081101561048757600080fd5b5035610c14565b6101fa600480360360408110156104a457600080fd5b5080359060200135610c1f565b610300610f9f565b6103e5610fae565b610300610fd2565b610324611017565b61032461105c565b6101fa600480360360408110156104ef57600080fd5b8135919081019060408101602082013564010000000081111561051157600080fd5b82018360208201111561052357600080fd5b8035906020019184600183028401116401000000008311171561054557600080fd5b509092509050611062565b6101fa6004803603602081101561056657600080fd5b50356001600160a01b031661106b565b6103246110be565b610300611252565b61058e610fae565b6105cd576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b6001600160a01b0381166106125760405162461bcd60e51b815260040180806020018281038252602b815260200180612297602b913960400191505060405180910390fd5b600454604080516001600160a01b039283168152918316602083015280517f840b9fc77a9405c32398a96e7edbf3be477e284a1f66fe9482c82b359a4baf239281900390910190a1600480546001600160a01b0319166001600160a01b0392909216919091179055565b610687333385611261565b505050565b610694610fae565b6106d3576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b6106de338585611261565b50505050565b6004546001600160a01b031681565b600281565b60035460408051637e062a3560e11b815290516000926001600160a01b03169163fc0c546a916004808301926020929190829003018186803b15801561073d57600080fd5b505afa158015610751573d6000803e3d6000fd5b505050506040513d602081101561076757600080fd5b505160025460408051637e062a3560e11b815290516001600160a01b03938416939092169163fc0c546a91600480820192602092909190829003018186803b1580156107b257600080fd5b505afa1580156107c6573d6000803e3d6000fd5b505050506040513d60208110156107dc57600080fd5b50516001600160a01b0316146107ee57fe5b600260009054906101000a90046001600160a01b03166001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561083c57600080fd5b505afa158015610850573d6000803e3d6000fd5b505050506040513d602081101561086657600080fd5b505190505b90565b60055481565b6000806000806000806108856110be565b5060006108af6008546108a3600a54426115fc90919063ffffffff16565b9063ffffffff61164716565b6009549091506108c5908263ffffffff6116a016565b60095542600a819055336000908152600d602052604081208054600282015491936108fa926108a3919063ffffffff6115fc16565b6001830154909150610912908263ffffffff6116a016565b600183015542600283015560095460009061092e576000610950565b61095060095461094485600101546108a3611017565b9063ffffffff6116fa16565b905061095a6109c7565b610962611017565b600190940154600954919c949b509950975095504294509092505050565b600080600854116109925760006109bf565b6008546001600160a01b0383166000908152600d60205260409020546109bf9190610944906108a3610bc9565b90505b919050565b600354604080516316d3df1560e31b815290516000926001600160a01b03169163b69ef8a8916004808301926020929190829003018186803b15801561083c57600080fd5b6000610a16610fae565b610a55576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b60015460408051631b32b81560e21b81526001600160a01b03878116600483015286811660248301526044820186905291519190921691636ccae0549160648083019260209291908290030181600087803b158015610ab357600080fd5b505af1158015610ac7573d6000803e3d6000fd5b505050506040513d6020811015610add57600080fd5b505190505b9392505050565b600f8181548110610af657fe5b6000918252602090912060059091020180546001820154600283015460038401546004909401549294509092909185565b600090565b60085481565b610b3a610fae565b610b79576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60065481565b600154604080516316d3df1560e31b815290516000926001600160a01b03169163b69ef8a8916004808301926020929190829003018186803b15801561083c57600080fd5b60075481565b60006109bf8261173c565b6004546001600160a01b03163314610c685760405162461bcd60e51b815260040180806020018281038252602581526020018061211f6025913960400191505060405180910390fd5b600b54600f5410610caa5760405162461bcd60e51b815260040180806020018281038252602d81526020018061226a602d913960400191505060405180910390fd5b610cb2610874565b5050505050506000610cc26109c7565b90506000808211610ce657600c54610ce190859063ffffffff61164716565b610cff565b610cff826109448660075461164790919063ffffffff16565b9050610d09611efc565b8181524260408201819052610d24908563ffffffff6116a016565b6060820190815260808201858152600f805460018101825560009190915283517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80260059092029182015560208401517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80382015560408401517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80482015591517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac805830155517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80690910155600754610e1990836116a0565b60075560035460408051637e062a3560e11b815290516001600160a01b039092169163fc0c546a91600480820192602092909190829003018186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d6020811015610e8b57600080fd5b5051600354604080516323b872dd60e01b81523360048201526001600160a01b03928316602482015260448101899052905191909216916323b872dd9160648083019260209291908290030181600087803b158015610ee957600080fd5b505af1158015610efd573d6000803e3d6000fd5b505050506040513d6020811015610f1357600080fd5b5051610f505760405162461bcd60e51b815260040180806020018281038252602d815260200180611f8e602d913960400191505060405180910390fd5b7ff346961af4c52f314df1b45964746280fe409abb959d4a2458d58f79408b1fe88585610f7b6109c7565b60408051938452602084019290925282820152519081900360600190a15050505050565b6000546001600160a01b031690565b600080546001600160a01b0316610fc3611c0b565b6001600160a01b031614905090565b60015460408051637e062a3560e11b815290516000926001600160a01b03169163fc0c546a916004808301926020929190829003018186803b15801561083c57600080fd5b600254604080516316d3df1560e31b815290516000926001600160a01b03169163b69ef8a8916004808301926020929190829003018186803b15801561083c57600080fd5b600f5490565b6106de8361173c565b611073610fae565b6110b2576040805162461bcd60e51b81526020600482018190526024820152600080516020612200833981519152604482015290519081900360640190fd5b6110bb81611c0f565b50565b600080806110ca6109c7565b9050600754600014156110df57809150611143565b6000805b600f54811015611110576111066110f982611caf565b839063ffffffff6116a016565b91506001016110e3565b5060075461112890610944838563ffffffff61164716565b60075490935061113e908263ffffffff6115fc16565b600755505b811561124c576003546002546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156111a257600080fd5b505af11580156111b6573d6000803e3d6000fd5b505050506040513d60208110156111cc57600080fd5b50516112095760405162461bcd60e51b815260040180806020018281038252602f8152602001806120ca602f913960400191505060405180910390fd5b7f2e444eb379b177e88ce0649c6110a3b01099f03e297127919dd5e3b63a761a9c826112336109c7565b6040805192835260208301919091528051918290030190a15b50905090565b600061125c610fd2565b905090565b600081116112a05760405162461bcd60e51b81526004018080602001828103825260218152602001806121be6021913960400191505060405180910390fd5b6001600160a01b0382166112e55760405162461bcd60e51b815260040180806020018281038252602881526020018061207f6028913960400191505060405180910390fd5b60085415806112fb575060006112f9610bc9565b115b6113365760405162461bcd60e51b815260040180806020018281038252604a815260200180612220604a913960600191505060405180910390fd5b6000806008541161135a57600c5461135590839063ffffffff61164716565b611378565b611378611365610bc9565b600854610944908563ffffffff61164716565b9050600081116113b95760405162461bcd60e51b81526004018080602001828103825260268152602001806120f96026913960400191505060405180910390fd5b6113c1610874565b505050506001600160a01b0385166000908152600d6020526040902080549092506113ed9150836116a0565b81554260028201556113fd611f2b565b506040805180820182528381524260208083019182526001600160a01b0388166000908152600e8252938420805460018181018355918652919094208351600290920201908155905192019190915560085461145f908463ffffffff6116a016565b60085560015460408051637e062a3560e11b815290516001600160a01b039092169163fc0c546a91600480820192602092909190829003018186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b505050506040513d60208110156114d157600080fd5b5051600154604080516323b872dd60e01b81526001600160a01b038a81166004830152928316602482015260448101889052905191909216916323b872dd9160648083019260209291908290030181600087803b15801561153157600080fd5b505af1158015611545573d6000803e3d6000fd5b505050506040513d602081101561155b57600080fd5b50516115985760405162461bcd60e51b815260040180806020018281038252602e815260200180612190602e913960400191505060405180910390fd5b846001600160a01b03167fc65e53b88159e7d2c0fc12a0600072e28ae53ff73b4c1715369c30f160935142856115cd88610980565b6040805192835260208301919091526060828201819052600090830152519081900360a00190a2505050505050565b600061163e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d72565b90505b92915050565b60008261165657506000611641565b8282028284828161166357fe5b041461163e5760405162461bcd60e51b81526004018080602001828103825260218152602001806121df6021913960400191505060405180910390fd5b60008282018381101561163e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061163e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e09565b6000611746610874565b5050505050506000821161178b5760405162461bcd60e51b81526004018080602001828103825260238152602001806120a76023913960400191505060405180910390fd5b8161179533610980565b10156117d25760405162461bcd60e51b815260040180806020018281038252603d815260200180612042603d913960400191505060405180910390fd5b60006117f26117df610bc9565b600854610944908663ffffffff61164716565b9050600081116118335760405162461bcd60e51b8152600401808060200182810382526030815260200180611fbb6030913960400191505060405180910390fd5b336000908152600d60209081526040808320600e9092528220909183815b81156119565783546000908590600019810190811061186c57fe5b9060005260206000209060020201905060006118958260010154426115fc90919063ffffffff16565b825490915060009085106119035782546118b5908363ffffffff61164716565b90506118c2848284611e6e565b93506118d4868263ffffffff6116a016565b83549096506118ea90869063ffffffff6115fc16565b87549095506118fd886000198301611f45565b5061194e565b611913858363ffffffff61164716565b9050611920848284611e6e565b9350611932868263ffffffff6116a016565b8354909650611947908663ffffffff6115fc16565b8355600094505b505050611851565b600185015461196b908463ffffffff6115fc16565b60018601558454611982908763ffffffff6115fc16565b8555600954611997908463ffffffff6115fc16565b6009556008546119ad908763ffffffff6115fc16565b6008556001546040805163a9059cbb60e01b8152336004820152602481018b905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611a0457600080fd5b505af1158015611a18573d6000803e3d6000fd5b505050506040513d6020811015611a2e57600080fd5b5051611a6b5760405162461bcd60e51b81526004018080602001828103825260308152602001806122c26030913960400191505060405180910390fd5b6002546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611abf57600080fd5b505af1158015611ad3573d6000803e3d6000fd5b505050506040513d6020811015611ae957600080fd5b5051611b265760405162461bcd60e51b81526004018080602001828103825260318152602001806120116031913960400191505060405180910390fd5b337faf01bfc8475df280aca00b578c4a948e6d95700f0db8c13365240f7f973c875489611b5283610980565b6040805192835260208301919091526060828201819052600090830152519081900360a00190a260408051828152905133917f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e430919081900360200190a26008541580611bc557506000611bc3610bc9565b115b611c005760405162461bcd60e51b815260040180806020018281038252604c815260200180612144604c913960600191505060405180910390fd5b979650505050505050565b3390565b6001600160a01b038116611c545760405162461bcd60e51b8152600401808060200182810382526026815260200180611feb6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600f8381548110611cbf57fe5b906000526020600020906005020190508060000154816001015410611ce85760009150506109c2565b60038101546000904210611d1d5760018201548254611d0c9163ffffffff6115fc16565b600383015460028401559050611d4d565b611d44826004015461094484600001546108a38660020154426115fc90919063ffffffff16565b42600284015590505b6001820154611d62908263ffffffff6116a016565b6001909201919091559050919050565b60008184841115611e015760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dc6578181015183820152602001611dae565b50505050905090810190601f168015611df35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611e585760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611dc6578181015183820152602001611dae565b506000838581611e6457fe5b0495945050505050565b600080611e83600954610944866108a3611017565b90506006548310611ea657611e9e858263ffffffff6116a016565b915050610ae2565b60006002600a0a90506000611eea82610944856108a3611edb6006546109448c6108a36005548c6115fc90919063ffffffff16565b6005549063ffffffff6116a016565b9050611c00878263ffffffff6116a016565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b815481835581811115610687576000838152602090206106879161086b9160029182028101918502015b80821115611f895760008082556001820155600201611f6f565b509056fe546f6b656e4765797365723a207472616e7366657220696e746f206c6f636b656420706f6f6c206661696c6564546f6b656e4765797365723a20556e61626c6520746f20756e7374616b6520616d6f756e74207468697320736d616c6c4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373546f6b656e4765797365723a207472616e73666572206f7574206f6620756e6c6f636b656420706f6f6c206661696c6564546f6b656e4765797365723a20756e7374616b6520616d6f756e742069732067726561746572207468616e20746f74616c2075736572207374616b6573546f6b656e4765797365723a2062656e6566696369617279206973207a65726f2061646472657373546f6b656e4765797365723a20756e7374616b6520616d6f756e74206973207a65726f546f6b656e4765797365723a207472616e73666572206f7574206f66206c6f636b656420706f6f6c206661696c6564546f6b656e4765797365723a205374616b6520616d6f756e7420697320746f6f20736d616c6c43616c6c6572206973206e6f74207468652072657761726420646973747269627574696f6e546f6b656e4765797365723a204572726f7220756e7374616b696e672e205374616b696e67207368617265732065786973742c20627574206e6f207374616b696e6720746f6b656e7320646f546f6b656e4765797365723a207472616e7366657220696e746f207374616b696e6720706f6f6c206661696c6564546f6b656e4765797365723a207374616b6520616d6f756e74206973207a65726f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572546f6b656e4765797365723a20496e76616c69642073746174652e205374616b696e67207368617265732065786973742c20627574206e6f207374616b696e6720746f6b656e7320646f546f6b656e4765797365723a2072656163686564206d6178696d756d20756e6c6f636b207363686564756c65734e65772072657761726420646973747269627574696f6e20697320746865207a65726f2061646472657373546f6b656e4765797365723a207472616e73666572206f7574206f66207374616b696e6720706f6f6c206661696c6564a265627a7a72315820112c135de132b5df016c984e1a949c55fe1847c609494d6db1be2cc0a450e08a64736f6c63430005110032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
