{
    "_format": "hh-sol-artifact-1",
    "contractName": "Airdropper",
    "sourceName": "contracts/Airdropper.sol",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "addr",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "roundId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "AddAirdrop",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "addr",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "roundId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "AirdropClaimed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "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": false,
                    "internalType": "string",
                    "name": "name",
                    "type": "string"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "value",
                    "type": "bytes"
                }
            ],
            "name": "Parameter",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "roundId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "roundStartTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "roundDeadline",
                    "type": "uint256"
                }
            ],
            "name": "RoundCreated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "roundId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "settleDestination",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "unclaimAmount",
                    "type": "uint256"
                }
            ],
            "name": "RoundSettled",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "roundId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "roundStartTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "roundDeadline",
                    "type": "uint256"
                }
            ],
            "name": "RoundUpdated",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "controller",
                    "type": "address"
                }
            ],
            "name": "addController",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "airdropRecord",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "_addr",
                    "type": "address[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_roundId",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "_amount",
                    "type": "uint256[]"
                }
            ],
            "name": "batchAirdrop",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256[]",
                    "name": "_roundIds",
                    "type": "uint256[]"
                }
            ],
            "name": "batchClaimAirdrop",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256[]",
                    "name": "_roundIds",
                    "type": "uint256[]"
                },
                {
                    "internalType": "address[]",
                    "name": "_accounts",
                    "type": "address[]"
                }
            ],
            "name": "batchClaimFor",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_roundId",
                    "type": "uint256"
                }
            ],
            "name": "claimAirdrop",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_roundId",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "claimAirdropFor",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "controllers",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenAddr",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_roundStartTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_roundDeadline",
                    "type": "uint256"
                }
            ],
            "name": "createRound",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_settleDestination",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "nextRoundId",
            "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": "controller",
                    "type": "address"
                }
            ],
            "name": "removeController",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "roundRecord",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "roundStartTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "roundDeadline",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "unclaimedAmount",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_settleDestination",
                    "type": "address"
                }
            ],
            "name": "setSettleDestination",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "settleDestination",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_roundId",
                    "type": "uint256"
                }
            ],
            "name": "settleEndedRound",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_roundId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_roundStartTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_roundDeadline",
                    "type": "uint256"
                }
            ],
            "name": "updateRound",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_tokenAddr",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "withdrawByAdmin",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b50611957806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063a702eb1b116100b8578063c863ee761161007c578063c863ee7614610287578063da8c229e1461029a578063e30d4440146102cd578063e5804621146102e0578063f2fde38b14610349578063f6a74ed71461035c57600080fd5b8063a702eb1b14610228578063a7fc7a071461023b578063b12402821461024e578063c4d66de814610261578063c6e1e7321461027457600080fd5b8063715018a6116100ff578063715018a6146101d6578063776b9758146101de5780638da5cb5b146101f157806399e16edf14610202578063a5b5a65c1461021557600080fd5b80631993610f1461013c5780631aef652c146101515780634002eda61461018f578063487c358014610198578063646c1b97146101ab575b600080fd5b61014f61014a3660046114ef565b61036f565b005b61017c61015f366004611577565b606560209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017c60675481565b61014f6101a6366004611577565b61041c565b6068546101be906001600160a01b031681565b6040516001600160a01b039091168152602001610186565b61014f61043c565b61014f6101ec3660046115a1565b610450565b6033546001600160a01b03166101be565b61014f6102103660046115ba565b61066c565b61014f610223366004611654565b610765565b61017c610236366004611676565b6107ee565b61014f610249366004611654565b610990565b61014f61025c3660046116a9565b6109bc565b61014f61026f366004611654565b610a00565b61014f6102823660046116eb565b610bb0565b61014f610295366004611717565b610d12565b6102bd6102a8366004611654565b60696020526000908152604090205460ff1681565b6040519015158152602001610186565b61014f6102db3660046115a1565b610d1c565b61031f6102ee3660046115a1565b60666020526000908152604090208054600182015460028301546003909301546001600160a01b0390921692909184565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610186565b61014f610357366004611654565b610d29565b61014f61036a366004611654565b610d9f565b8281146103b05760405162461bcd60e51b81526004016103a7906020808252600490820152630473032360e41b604082015260600190565b60405180910390fd5b60005b83811015610415576104038585838181106103d0576103d0611743565b905060200201358484848181106103e9576103e9611743565b90506020020160208101906103fe9190611654565b610dc8565b8061040d8161176f565b9150506103b3565b5050505050565b610424610fec565b6104386001600160a01b0383163383611046565b5050565b610444610fec565b61044e6000611098565b565b60008181526066602052604090206002015442116104995760405162461bcd60e51b81526004016103a7906020808252600490820152630826060760e31b604082015260600190565b6068546001600160a01b03166104da5760405162461bcd60e51b81526004016103a7906020808252600490820152630826060760e31b604082015260600190565b600081815260666020526040812060030154908190036105255760405162461bcd60e51b81526004016103a7906020808252600490820152634130303960e01b604082015260600190565b600082815260666020526040908190206003810154905491516370a0823160e01b815230600482015290916001600160a01b0316906370a0823190602401602060405180830381865afa158015610580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a49190611788565b10156105db5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303760e01b604082015260600190565b60685460008381526066602052604090206003810154905461060b926001600160a01b0391821692911690611046565b60008281526066602090815260408083206003019290925560685482516001600160a01b03909116815290810183905283917f08ca12049e5dbbd5a42cdbb40bf9868a221ee9edc045c6f0ab7a08ff59acfc44910160405180910390a25050565b3360009081526069602052604090205460ff1661069b5760405162461bcd60e51b81526004016103a7906117a1565b84831480156106a957508481145b6106de5760405162461bcd60e51b81526004016103a7906020808252600490820152630473031360e41b604082015260600190565b60005b8581101561075c5761074a8787838181106106fe576106fe611743565b90506020020160208101906107139190611654565b86868481811061072557610725611743565b9050602002013585858581811061073e5761073e611743565b905060200201356110ea565b806107548161176f565b9150506106e1565b50505050505050565b61076d610fec565b606880546001600160a01b0319166001600160a01b0383161790556040516bffffffffffffffffffffffff19606083901b1660208201527f63c3003ba148ae22ef0cecea7dab164660fafd04037d699677e4478e17ef7b1b9060340160408051601f19818403018152908290526107e39161181b565b60405180910390a150565b3360009081526069602052604081205460ff1661081d5760405162461bcd60e51b81526004016103a7906117a1565b428311801561082b57508282115b6108605760405162461bcd60e51b81526004016103a7906020808252600490820152634130303160e01b604082015260600190565b6001600160a01b03841661089f5760405162461bcd60e51b81526004016103a7906020808252600490820152634730303960e01b604082015260600190565b604080516080810182526001600160a01b03868116825260208083018781528385018781526000606086018181526067805483526066909552968120955186546001600160a01b03191695169490941785559051600180860191909155905160028501559351600390930192909255815461091b908490611856565b909155505060675461092f9060019061186e565b604080516001600160a01b0387168152602081018690529081018490527fd6dd0ade89eeb414b7e63b3b71fde3db88b04f032c3d5bce15271008598f64f99060600160405180910390a26001606754610988919061186e565b949350505050565b610998610fec565b6001600160a01b03166000908152606960205260409020805460ff19166001179055565b60005b818110156109fb576109e98383838181106109dc576109dc611743565b9050602002013533610dc8565b806109f38161176f565b9150506109bf565b505050565b600054610100900460ff1615808015610a205750600054600160ff909116105b80610a3a5750303b158015610a3a575060005460ff166001145b610a9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103a7565b6000805460ff191660011790558015610ac0576000805461ff0019166101001790555b610ac861124c565b336000908152606960209081526040918290208054600160ff19909116179055606880546001600160a01b0319166001600160a01b03861617905590516bffffffffffffffffffffffff19606085901b16918101919091527f63c3003ba148ae22ef0cecea7dab164660fafd04037d699677e4478e17ef7b1b9060340160408051601f1981840301815290829052610b5f9161181b565b60405180910390a18015610438576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b3360009081526069602052604090205460ff16610bdf5760405162461bcd60e51b81526004016103a7906117a1565b600083815260666020908152604091829020825160808101845281546001600160a01b03168152600182015492810183905260028201549381019390935260030154606083015215801590610c375750428160400151115b610c6c5760405162461bcd60e51b81526004016103a7906020808252600490820152634130313160e01b604082015260600190565b4283118015610c7a57508282115b610caf5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303160e01b604082015260600190565b6000848152606660209081526040918290206001810186905560020184905581518681529081018590529081018390527f717f6028ca251059c1372c3af54bbf4541e12df136c99141422b0d34457b715c9060600160405180910390a150505050565b6104388282610dc8565b610d268133610dc8565b50565b610d31610fec565b6001600160a01b038116610d965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a7565b610d2681611098565b610da7610fec565b6001600160a01b03166000908152606960205260409020805460ff19169055565b60008281526066602052604090206002015442108015610df8575060008281526066602052604090206001015442115b610e2d5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303560e01b604082015260600190565b6001600160a01b038116600090815260656020908152604080832085845290915281205490819003610e8a5760405162461bcd60e51b81526004016103a7906020808252600490820152632098181b60e11b604082015260600190565b600083815260666020526040908190205490516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190611788565b1015610f3a5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303760e01b604082015260600190565b600083815260666020526040902054610f5d906001600160a01b03168383611046565b6001600160a01b03821660009081526065602090815260408083208684528252808320839055606690915281206003018054839290610f9d90849061186e565b909155505060408051848152602081018390526001600160a01b038416917fd0755a9ef5a74f50d34b3503bb5b65ad71a112c001b76dfa6412c9aa4a1f43b091015b60405180910390a2505050565b6033546001600160a01b0316331461044e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526109fb90849061127b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526066602052604090206001015442106111335760405162461bcd60e51b81526004016103a7906020808252600490820152632098181960e11b604082015260600190565b6001600160a01b03831660009081526065602090815260408083208584529091529020541561118d5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303360e01b604082015260600190565b600081116111c65760405162461bcd60e51b81526004016103a790602080825260049082015263104c0c0d60e21b604082015260600190565b6001600160a01b03831660009081526065602090815260408083208584528252808320849055606690915281206003018054839290611206908490611856565b909155505060408051838152602081018390526001600160a01b038516917fb644bbce63c80558ea1f08f2d1e6c53920c5d2a866b87f5827b61d6b3898bd1a9101610fdf565b600054610100900460ff166112735760405162461bcd60e51b81526004016103a790611885565b61044e611350565b60006112d0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113809092919063ffffffff16565b90508051600014806112f15750808060200190518101906112f191906118d0565b6109fb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103a7565b600054610100900460ff166113775760405162461bcd60e51b81526004016103a790611885565b61044e33611098565b6060610988848460008585600080866001600160a01b031685876040516113a791906118f2565b60006040518083038185875af1925050503d80600081146113e4576040519150601f19603f3d011682016040523d82523d6000602084013e6113e9565b606091505b50915091506113fa87838387611405565b979650505050505050565b6060831561147457825160000361146d576001600160a01b0385163b61146d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103a7565b5081610988565b61098883838151156114895781518083602001fd5b8060405162461bcd60e51b81526004016103a7919061190e565b60008083601f8401126114b557600080fd5b50813567ffffffffffffffff8111156114cd57600080fd5b6020830191508360208260051b85010111156114e857600080fd5b9250929050565b6000806000806040858703121561150557600080fd5b843567ffffffffffffffff8082111561151d57600080fd5b611529888389016114a3565b9096509450602087013591508082111561154257600080fd5b5061154f878288016114a3565b95989497509550505050565b80356001600160a01b038116811461157257600080fd5b919050565b6000806040838503121561158a57600080fd5b6115938361155b565b946020939093013593505050565b6000602082840312156115b357600080fd5b5035919050565b600080600080600080606087890312156115d357600080fd5b863567ffffffffffffffff808211156115eb57600080fd5b6115f78a838b016114a3565b9098509650602089013591508082111561161057600080fd5b61161c8a838b016114a3565b9096509450604089013591508082111561163557600080fd5b5061164289828a016114a3565b979a9699509497509295939492505050565b60006020828403121561166657600080fd5b61166f8261155b565b9392505050565b60008060006060848603121561168b57600080fd5b6116948461155b565b95602085013595506040909401359392505050565b600080602083850312156116bc57600080fd5b823567ffffffffffffffff8111156116d357600080fd5b6116df858286016114a3565b90969095509350505050565b60008060006060848603121561170057600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561172a57600080fd5b8235915061173a6020840161155b565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161178157611781611759565b5060010190565b60006020828403121561179a57600080fd5b5051919050565b6020808252600490820152630413031360e41b604082015260600190565b60005b838110156117da5781810151838201526020016117c2565b838111156117e9576000848401525b50505050565b600081518084526118078160208601602086016117bf565b601f01601f19169290920160200192915050565b60408152601160408201527039b2ba3a3632a232b9ba34b730ba34b7b760791b606082015260806020820152600061166f60808301846117ef565b6000821982111561186957611869611759565b500190565b60008282101561188057611880611759565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156118e257600080fd5b8151801515811461166f57600080fd5b600082516119048184602087016117bf565b9190910192915050565b60208152600061166f60208301846117ef56fea2646970667358221220f3d8379d0853f74d4a89aea28a42556f71e3f647e45a7b3aed7535d52bb52c4c64736f6c634300080f0033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063a702eb1b116100b8578063c863ee761161007c578063c863ee7614610287578063da8c229e1461029a578063e30d4440146102cd578063e5804621146102e0578063f2fde38b14610349578063f6a74ed71461035c57600080fd5b8063a702eb1b14610228578063a7fc7a071461023b578063b12402821461024e578063c4d66de814610261578063c6e1e7321461027457600080fd5b8063715018a6116100ff578063715018a6146101d6578063776b9758146101de5780638da5cb5b146101f157806399e16edf14610202578063a5b5a65c1461021557600080fd5b80631993610f1461013c5780631aef652c146101515780634002eda61461018f578063487c358014610198578063646c1b97146101ab575b600080fd5b61014f61014a3660046114ef565b61036f565b005b61017c61015f366004611577565b606560209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61017c60675481565b61014f6101a6366004611577565b61041c565b6068546101be906001600160a01b031681565b6040516001600160a01b039091168152602001610186565b61014f61043c565b61014f6101ec3660046115a1565b610450565b6033546001600160a01b03166101be565b61014f6102103660046115ba565b61066c565b61014f610223366004611654565b610765565b61017c610236366004611676565b6107ee565b61014f610249366004611654565b610990565b61014f61025c3660046116a9565b6109bc565b61014f61026f366004611654565b610a00565b61014f6102823660046116eb565b610bb0565b61014f610295366004611717565b610d12565b6102bd6102a8366004611654565b60696020526000908152604090205460ff1681565b6040519015158152602001610186565b61014f6102db3660046115a1565b610d1c565b61031f6102ee3660046115a1565b60666020526000908152604090208054600182015460028301546003909301546001600160a01b0390921692909184565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610186565b61014f610357366004611654565b610d29565b61014f61036a366004611654565b610d9f565b8281146103b05760405162461bcd60e51b81526004016103a7906020808252600490820152630473032360e41b604082015260600190565b60405180910390fd5b60005b83811015610415576104038585838181106103d0576103d0611743565b905060200201358484848181106103e9576103e9611743565b90506020020160208101906103fe9190611654565b610dc8565b8061040d8161176f565b9150506103b3565b5050505050565b610424610fec565b6104386001600160a01b0383163383611046565b5050565b610444610fec565b61044e6000611098565b565b60008181526066602052604090206002015442116104995760405162461bcd60e51b81526004016103a7906020808252600490820152630826060760e31b604082015260600190565b6068546001600160a01b03166104da5760405162461bcd60e51b81526004016103a7906020808252600490820152630826060760e31b604082015260600190565b600081815260666020526040812060030154908190036105255760405162461bcd60e51b81526004016103a7906020808252600490820152634130303960e01b604082015260600190565b600082815260666020526040908190206003810154905491516370a0823160e01b815230600482015290916001600160a01b0316906370a0823190602401602060405180830381865afa158015610580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a49190611788565b10156105db5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303760e01b604082015260600190565b60685460008381526066602052604090206003810154905461060b926001600160a01b0391821692911690611046565b60008281526066602090815260408083206003019290925560685482516001600160a01b03909116815290810183905283917f08ca12049e5dbbd5a42cdbb40bf9868a221ee9edc045c6f0ab7a08ff59acfc44910160405180910390a25050565b3360009081526069602052604090205460ff1661069b5760405162461bcd60e51b81526004016103a7906117a1565b84831480156106a957508481145b6106de5760405162461bcd60e51b81526004016103a7906020808252600490820152630473031360e41b604082015260600190565b60005b8581101561075c5761074a8787838181106106fe576106fe611743565b90506020020160208101906107139190611654565b86868481811061072557610725611743565b9050602002013585858581811061073e5761073e611743565b905060200201356110ea565b806107548161176f565b9150506106e1565b50505050505050565b61076d610fec565b606880546001600160a01b0319166001600160a01b0383161790556040516bffffffffffffffffffffffff19606083901b1660208201527f63c3003ba148ae22ef0cecea7dab164660fafd04037d699677e4478e17ef7b1b9060340160408051601f19818403018152908290526107e39161181b565b60405180910390a150565b3360009081526069602052604081205460ff1661081d5760405162461bcd60e51b81526004016103a7906117a1565b428311801561082b57508282115b6108605760405162461bcd60e51b81526004016103a7906020808252600490820152634130303160e01b604082015260600190565b6001600160a01b03841661089f5760405162461bcd60e51b81526004016103a7906020808252600490820152634730303960e01b604082015260600190565b604080516080810182526001600160a01b03868116825260208083018781528385018781526000606086018181526067805483526066909552968120955186546001600160a01b03191695169490941785559051600180860191909155905160028501559351600390930192909255815461091b908490611856565b909155505060675461092f9060019061186e565b604080516001600160a01b0387168152602081018690529081018490527fd6dd0ade89eeb414b7e63b3b71fde3db88b04f032c3d5bce15271008598f64f99060600160405180910390a26001606754610988919061186e565b949350505050565b610998610fec565b6001600160a01b03166000908152606960205260409020805460ff19166001179055565b60005b818110156109fb576109e98383838181106109dc576109dc611743565b9050602002013533610dc8565b806109f38161176f565b9150506109bf565b505050565b600054610100900460ff1615808015610a205750600054600160ff909116105b80610a3a5750303b158015610a3a575060005460ff166001145b610a9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103a7565b6000805460ff191660011790558015610ac0576000805461ff0019166101001790555b610ac861124c565b336000908152606960209081526040918290208054600160ff19909116179055606880546001600160a01b0319166001600160a01b03861617905590516bffffffffffffffffffffffff19606085901b16918101919091527f63c3003ba148ae22ef0cecea7dab164660fafd04037d699677e4478e17ef7b1b9060340160408051601f1981840301815290829052610b5f9161181b565b60405180910390a18015610438576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b3360009081526069602052604090205460ff16610bdf5760405162461bcd60e51b81526004016103a7906117a1565b600083815260666020908152604091829020825160808101845281546001600160a01b03168152600182015492810183905260028201549381019390935260030154606083015215801590610c375750428160400151115b610c6c5760405162461bcd60e51b81526004016103a7906020808252600490820152634130313160e01b604082015260600190565b4283118015610c7a57508282115b610caf5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303160e01b604082015260600190565b6000848152606660209081526040918290206001810186905560020184905581518681529081018590529081018390527f717f6028ca251059c1372c3af54bbf4541e12df136c99141422b0d34457b715c9060600160405180910390a150505050565b6104388282610dc8565b610d268133610dc8565b50565b610d31610fec565b6001600160a01b038116610d965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a7565b610d2681611098565b610da7610fec565b6001600160a01b03166000908152606960205260409020805460ff19169055565b60008281526066602052604090206002015442108015610df8575060008281526066602052604090206001015442115b610e2d5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303560e01b604082015260600190565b6001600160a01b038116600090815260656020908152604080832085845290915281205490819003610e8a5760405162461bcd60e51b81526004016103a7906020808252600490820152632098181b60e11b604082015260600190565b600083815260666020526040908190205490516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190611788565b1015610f3a5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303760e01b604082015260600190565b600083815260666020526040902054610f5d906001600160a01b03168383611046565b6001600160a01b03821660009081526065602090815260408083208684528252808320839055606690915281206003018054839290610f9d90849061186e565b909155505060408051848152602081018390526001600160a01b038416917fd0755a9ef5a74f50d34b3503bb5b65ad71a112c001b76dfa6412c9aa4a1f43b091015b60405180910390a2505050565b6033546001600160a01b0316331461044e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526109fb90849061127b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526066602052604090206001015442106111335760405162461bcd60e51b81526004016103a7906020808252600490820152632098181960e11b604082015260600190565b6001600160a01b03831660009081526065602090815260408083208584529091529020541561118d5760405162461bcd60e51b81526004016103a7906020808252600490820152634130303360e01b604082015260600190565b600081116111c65760405162461bcd60e51b81526004016103a790602080825260049082015263104c0c0d60e21b604082015260600190565b6001600160a01b03831660009081526065602090815260408083208584528252808320849055606690915281206003018054839290611206908490611856565b909155505060408051838152602081018390526001600160a01b038516917fb644bbce63c80558ea1f08f2d1e6c53920c5d2a866b87f5827b61d6b3898bd1a9101610fdf565b600054610100900460ff166112735760405162461bcd60e51b81526004016103a790611885565b61044e611350565b60006112d0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113809092919063ffffffff16565b90508051600014806112f15750808060200190518101906112f191906118d0565b6109fb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103a7565b600054610100900460ff166113775760405162461bcd60e51b81526004016103a790611885565b61044e33611098565b6060610988848460008585600080866001600160a01b031685876040516113a791906118f2565b60006040518083038185875af1925050503d80600081146113e4576040519150601f19603f3d011682016040523d82523d6000602084013e6113e9565b606091505b50915091506113fa87838387611405565b979650505050505050565b6060831561147457825160000361146d576001600160a01b0385163b61146d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103a7565b5081610988565b61098883838151156114895781518083602001fd5b8060405162461bcd60e51b81526004016103a7919061190e565b60008083601f8401126114b557600080fd5b50813567ffffffffffffffff8111156114cd57600080fd5b6020830191508360208260051b85010111156114e857600080fd5b9250929050565b6000806000806040858703121561150557600080fd5b843567ffffffffffffffff8082111561151d57600080fd5b611529888389016114a3565b9096509450602087013591508082111561154257600080fd5b5061154f878288016114a3565b95989497509550505050565b80356001600160a01b038116811461157257600080fd5b919050565b6000806040838503121561158a57600080fd5b6115938361155b565b946020939093013593505050565b6000602082840312156115b357600080fd5b5035919050565b600080600080600080606087890312156115d357600080fd5b863567ffffffffffffffff808211156115eb57600080fd5b6115f78a838b016114a3565b9098509650602089013591508082111561161057600080fd5b61161c8a838b016114a3565b9096509450604089013591508082111561163557600080fd5b5061164289828a016114a3565b979a9699509497509295939492505050565b60006020828403121561166657600080fd5b61166f8261155b565b9392505050565b60008060006060848603121561168b57600080fd5b6116948461155b565b95602085013595506040909401359392505050565b600080602083850312156116bc57600080fd5b823567ffffffffffffffff8111156116d357600080fd5b6116df858286016114a3565b90969095509350505050565b60008060006060848603121561170057600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561172a57600080fd5b8235915061173a6020840161155b565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161178157611781611759565b5060010190565b60006020828403121561179a57600080fd5b5051919050565b6020808252600490820152630413031360e41b604082015260600190565b60005b838110156117da5781810151838201526020016117c2565b838111156117e9576000848401525b50505050565b600081518084526118078160208601602086016117bf565b601f01601f19169290920160200192915050565b60408152601160408201527039b2ba3a3632a232b9ba34b730ba34b7b760791b606082015260806020820152600061166f60808301846117ef565b6000821982111561186957611869611759565b500190565b60008282101561188057611880611759565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156118e257600080fd5b8151801515811461166f57600080fd5b600082516119048184602087016117bf565b9190910192915050565b60208152600061166f60208301846117ef56fea2646970667358221220f3d8379d0853f74d4a89aea28a42556f71e3f647e45a7b3aed7535d52bb52c4c64736f6c634300080f0033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
