UNPKG

@giveth/bridge-contract

Version:
649 lines 81.6 kB
{ "contractName": "ForeignGivethBridge", "source": "./contracts/ForeignGivethBridge.sol", "compilerOutput": { "abi": [ { "constant": true, "inputs": [], "name": "escapeHatchCaller", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_newOwner", "type": "address" } ], "name": "changeOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "sender", "type": "address" }, { "name": "mainToken", "type": "address" }, { "name": "amount", "type": "uint256" }, { "name": "homeTx", "type": "bytes32" }, { "name": "data", "type": "bytes" } ], "name": "deposit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "unpause", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_amount", "type": "uint256" } ], "name": "onTransfer", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "paused", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_dac", "type": "address" } ], "name": "removeOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_newOwnerCandidate", "type": "address" } ], "name": "proposeOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "liquidPledging", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "acceptOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "mainToken", "type": "address" }, { "name": "tokenName", "type": "string" }, { "name": "decimals", "type": "uint8" }, { "name": "tokenSymbol", "type": "string" } ], "name": "addToken", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "pause", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_token", "type": "address" } ], "name": "isTokenEscapable", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "owner", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_token", "type": "address" } ], "name": "escapeHatch", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "inverseTokenMapping", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "tokenMapping", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "depositor", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "newOwnerCandidate", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_newEscapeHatchCaller", "type": "address" } ], "name": "changeHatchEscapeCaller", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "recipient", "type": "address" }, { "name": "sideToken", "type": "address" }, { "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_owner", "type": "address" }, { "name": "_spender", "type": "address" }, { "name": "_amount", "type": "uint256" } ], "name": "onApprove", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "tokenFactory", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "newDepositor", "type": "address" } ], "name": "changeDepositor", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "sideToken", "type": "address" }, { "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_owner", "type": "address" } ], "name": "proxyPayment", "outputs": [ { "name": "", "type": "bool" } ], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": true, "inputs": [], "name": "escapeHatchDestination", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "_escapeHatchCaller", "type": "address" }, { "name": "_escapeHatchDestination", "type": "address" }, { "name": "_tokenFactory", "type": "address" }, { "name": "_liquidPledging", "type": "address" }, { "name": "_depositor", "type": "address" }, { "name": "mainTokens", "type": "address[]" }, { "name": "sideTokens", "type": "address[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "sender", "type": "address" }, { "indexed": false, "name": "token", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" }, { "indexed": false, "name": "homeTx", "type": "bytes32" }, { "indexed": false, "name": "data", "type": "bytes" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "recipient", "type": "address" }, { "indexed": false, "name": "token", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "mainToken", "type": "address" }, { "indexed": false, "name": "sideToken", "type": "address" } ], "name": "TokenAdded", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Pause", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Unpause", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "token", "type": "address" } ], "name": "EscapeHatchBlackistedToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "token", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "EscapeHatchCalled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "by", "type": "address" }, { "indexed": true, "name": "to", "type": "address" } ], "name": "OwnershipRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [], "name": "OwnershipRemoved", "type": "event" } ], "evm": { "bytecode": { "object": "60806040526005805460ff191690553480156200001b57600080fd5b50604051620034613803806200346183398101604090815281516020830151918301516060840151608085015160a086015160c08701516000805433600160a060020a0319918216178255600280548216600160a060020a03808b169190911790915560038054909216818b161790915596989596949593949284019391909101918190819088161515620000af57600080fd5b600160a060020a0387161515620000c557600080fd5b8351855114620000d457600080fd5b60058054600160a060020a03808b166101000261010060a860020a03199092169190911790915560068054898316600160a060020a0319918216179091556007805492891692909116919091179055600092505b8451831015620002885784838151811015156200014157fe5b90602001906020020151915083838151811015156200015c57fe5b6020908102909101810151600654604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152600019602482015290519294509084169263095ea7b3926044808401938290030181600087803b158015620001d557600080fd5b505af1158015620001ea573d6000803e3d6000fd5b505050506040513d60208110156200020157600080fd5b5050600160a060020a0380831660008181526008602090815260408083208054958716600160a060020a031996871681179091558084526009835292819020805490951684179094558351918252925191927fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e792918290030190a260019092019162000128565b505050505050505050506131bf80620002a26000396000f3006080604052600436106200017a5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631f6eb6e781146200017f5780632af4c31e14620001b35780632b7c5dde14620001d95780633f4ba83a14620002195780634a39314914620002315780635c975abb1462000272578063666a3427146200028a578063710bf32214620002ae57806374041d1f14620002d257806379ba509714620002ea578063824f36f314620003025780638456cb591462000345578063892db057146200035d5780638da5cb5b1462000381578063a142d6081462000399578063af95e2d514620003bd578063ba27f50b14620003e1578063c7c4ff461462000405578063d091b550146200041d578063d836fbe81462000435578063d9caed121462000459578063da682aeb1462000231578063e77772fe1462000486578063e7f4eeeb146200049e578063f3fef3a314620004c2578063f48c305414620004e9578063f5b6123014620004ff575b600080fd5b3480156200018c57600080fd5b506200019762000517565b60408051600160a060020a039092168252519081900360200190f35b348015620001c057600080fd5b50620001d7600160a060020a036004351662000526565b005b348015620001e657600080fd5b50620001d7600160a060020a0360048035821691602480359091169160443591606435916084359182019101356200063a565b3480156200022657600080fd5b50620001d7620009d2565b3480156200023e57600080fd5b506200025e600160a060020a036004358116906024351660443562000a6b565b604080519115158252519081900360200190f35b3480156200027f57600080fd5b506200025e62000a74565b3480156200029757600080fd5b50620001d7600160a060020a036004351662000a7d565b348015620002bb57600080fd5b50620001d7600160a060020a036004351662000b77565b348015620002df57600080fd5b506200019762000c1b565b348015620002f757600080fd5b50620001d762000c2a565b3480156200030f57600080fd5b50620001d760048035600160a060020a0316906024803580820192908101359160443560ff169160643591820191013562000cee565b3480156200035257600080fd5b50620001d762000f40565b3480156200036a57600080fd5b506200025e600160a060020a036004351662000fdb565b3480156200038e57600080fd5b506200019762000ffa565b348015620003a657600080fd5b50620001d7600160a060020a036004351662001009565b348015620003ca57600080fd5b5062000197600160a060020a03600435166200136c565b348015620003ee57600080fd5b5062000197600160a060020a036004351662001387565b3480156200041257600080fd5b5062000197620013a2565b3480156200042a57600080fd5b5062000197620013b1565b3480156200044257600080fd5b50620001d7600160a060020a0360043516620013c0565b3480156200046657600080fd5b50620001d7600160a060020a03600435811690602435166044356200145d565b3480156200049357600080fd5b5062000197620015c0565b348015620004ab57600080fd5b50620001d7600160a060020a0360043516620015d4565b348015620004cf57600080fd5b50620001d7600160a060020a036004351660243562001648565b6200025e600160a060020a036004351662001659565b3480156200050c57600080fd5b50620001976200165f565b600254600160a060020a031681565b60008054600160a060020a0316331462000579576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b600160a060020a0382161515620005da576040805160e560020a62461bcd02815260206004820152601760248201527f6572725f6f776e6564496e76616c696441646472657373000000000000000000604482015290519081900360640190fd5b5060008054600160a060020a03838116600160a060020a031980841691909117808555600180549092169091556040519282169391169183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600754600090600160a060020a031633146200065557600080fd5b50600160a060020a03808616600090815260086020526040902054168015156200067e57600080fd5b604080517f827f32c0000000000000000000000000000000000000000000000000000000008152306004820152602481018790529051600160a060020a0383169163827f32c09160448083019260209291908290030181600087803b158015620006e757600080fd5b505af1158015620006fc573d6000803e3d6000fd5b505050506040513d60208110156200071357600080fd5b5050600654604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0392831660248201529051879284169163dd62ed3e9160448083019260209291908290030181600087803b1580156200078457600080fd5b505af115801562000799573d6000803e3d6000fd5b505050506040513d6020811015620007b057600080fd5b50511015620008fa57600654604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260006024820181905291519284169263095ea7b392604480840193602093929083900390910190829087803b1580156200082c57600080fd5b505af115801562000841573d6000803e3d6000fd5b505050506040513d60208110156200085857600080fd5b5050600654604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152600019602482015290519183169163095ea7b3916044808201926020929091908290030181600087803b158015620008cb57600080fd5b505af1158015620008e0573d6000803e3d6000fd5b505050506040513d6020811015620008f757600080fd5b50505b600654604051600160a060020a039091169084908490808383808284378201915050925050506000604051808303816000865af191505015156200093d57600080fd5b86600160a060020a03167fff628606f5860a17beddc73a7046379d2539e0f878cb934e43ce2c5150bc91a587878787876040518086600160a060020a0316600160a060020a03168152602001858152602001846000191660001916815260200180602001828103825284848281815260200192508082843760405192018290039850909650505050505050a250505050505050565b600054600160a060020a0316331462000a24576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b60055460ff16151562000a3657600080fd5b6005805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60019392505050565b60055460ff1681565b600054600160a060020a0316331462000acf576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b610dac600160a060020a0382161462000b32576040805160e560020a62461bcd02815260206004820152601360248201527f6572725f6f776e6564496e76616c696444616300000000000000000000000000604482015290519081900360640190fd5b60008054600160a060020a031990811682556001805490911690556040517f94e8b32e01b9eedfddd778ffbd051a7718cdc14781702884561162dca6f74dbb9190a150565b600054600160a060020a0316331462000bc9576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b60018054600160a060020a031916600160a060020a03838116919091179182905560405191169033907f13a4b3bc0d5234dd3d87c9f1557d8faefa37986da62c36ba49309e2fb2c9aec490600090a350565b600654600160a060020a031681565b600154600090600160a060020a0316331462000c90576040805160e560020a62461bcd02815260206004820152601560248201527f6572725f6f776e65644e6f7443616e6469646174650000000000000000000000604482015290519081900360640190fd5b506000805460018054600160a060020a03808216600160a060020a03198086169190911780875592169092556040519282169391169183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60008054600160a060020a0316331462000d41576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b600160a060020a03808816600090815260086020526040902054161562000d6757600080fd5b6005546101009004600160a060020a03166000808888888888600162000d8c6200166e565b600160a060020a03808b168252891660208201526040810188905260ff8516608082015281151560c082015260e06060820181815290820187905260a0820161010083018989808284379091018481038352868152602001905086868082843782019150509b505050505050505050505050604051809103906000f08015801562000e1b573d6000803e3d6000fd5b50600654604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152600019602482015290519293509083169163095ea7b3916044808201926020929091908290030181600087803b15801562000e9057600080fd5b505af115801562000ea5573d6000803e3d6000fd5b505050506040513d602081101562000ebc57600080fd5b5050600160a060020a0380881660008181526008602090815260408083208054958716600160a060020a031996871681179091558084526009835292819020805490951684179094558351918252925191927fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e792918290030190a250505050505050565b600054600160a060020a0316331462000f92576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b60055460ff161562000fa357600080fd5b6005805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600160a060020a031660009081526004602052604090205460ff161590565b600054600160a060020a031681565b6002546000908190600160a060020a0316331480620010325750600054600160a060020a031633145b151562001089576040805160e560020a62461bcd02815260206004820152601a60248201527f6572725f657363617061626c65496e76616c696443616c6c6572000000000000604482015290519081900360640190fd5b600160a060020a03831660009081526004602052604090205460ff1615620010fb576040805160e560020a62461bcd02815260206004820152601d60248201527f6572725f657363617061626c65426c61636b6c6973746564546f6b656e000000604482015290519081900360640190fd5b600160a060020a0383161515620011965760035460405130319350600160a060020a03909116906108fc8415029084906000818181858888f193505050501580156200114b573d6000803e3d6000fd5b5060408051600160a060020a03851681526020810184905281517fa50dde912fa22ea0d215a0236093ac45b4d55d6ef0c604c319f900029c5d10f2929181900390910190a162001367565b50604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290518391600160a060020a038316916370a08231916024808201926020929091908290030181600087803b158015620011fc57600080fd5b505af115801562001211573d6000803e3d6000fd5b505050506040513d60208110156200122857600080fd5b5051600354604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810184905290519294509083169163a9059cbb916044808201926020929091908290030181600087803b1580156200129d57600080fd5b505af1158015620012b2573d6000803e3d6000fd5b505050506040513d6020811015620012c957600080fd5b5051151562001322576040805160e560020a62461bcd02815260206004820152601560248201527f6572725f657363617061626c655472616e736665720000000000000000000000604482015290519081900360640190fd5b60408051600160a060020a03851681526020810184905281517fa50dde912fa22ea0d215a0236093ac45b4d55d6ef0c604c319f900029c5d10f2929181900390910190a15b505050565b600960205260009081526040902054600160a060020a031681565b600860205260009081526040902054600160a060020a031681565b600754600160a060020a031681565b600154600160a060020a031681565b600254600160a060020a0316331480620013e45750600054600160a060020a031633145b15156200143b576040805160e560020a62461bcd02815260206004820152601a60248201527f6572725f657363617061626c65496e76616c696443616c6c6572000000000000604482015290519081900360640190fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60055460009060ff16156200147157600080fd5b50600160a060020a038083166000908152600960205260409020541680151580620014d157506000805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c754600160a060020a038481169116145b1515620014dd57600080fd5b604080517fd3ce77fe000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a0385169163d3ce77fe9160448083019260209291908290030181600087803b1580156200154657600080fd5b505af11580156200155b573d6000803e3d6000fd5b505050506040513d60208110156200157257600080fd5b505060408051600160a060020a038381168252602082018590528251908716927f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb928290030190a250505050565b6005546101009004600160a060020a031681565b600054600160a060020a0316331462001626576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b60078054600160a060020a031916600160a060020a0392909216919091179055565b620016553383836200145d565b5050565b50600090565b600354600160a060020a031681565b604051611af4806200168083390190560060c0604052600760808190527f4d4d545f302e320000000000000000000000000000000000000000000000000060a090815262000040916004919062000147565b503480156200004e57600080fd5b5060405162001af438038062001af48339810160409081528151602080840151928401516060850151608086015160a087015160c088015160008054600160a060020a03191633179055600b8054600160a060020a0389166101000261010060a860020a031990911617905592880180519698949690959294919091019291620000de9160019187019062000147565b506002805460ff191660ff851617905581516200010390600390602085019062000147565b5060058054600160a060020a031916600160a060020a039790971696909617909555505050600655600b805460ff19169115159190911790555043600755620001ec565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018a57805160ff1916838001178555620001ba565b82800160010185558215620001ba579182015b82811115620001ba5782518255916020019190600101906200019d565b50620001c8929150620001cc565b5090565b620001e991905b80821115620001c85760008155600101620001d3565b90565b6118f880620001fc6000396000f30060806040526004361061012f5763ffffffff60e060020a60003504166306fdde0381146101ef578063095ea7b31461027957806317634514146102b157806318160ddd146102d857806323b872dd146102ed578063313ce567146103175780633cebb823146103425780634ee2cd7e1461036357806354fd4d50146103875780636638c0871461039c57806370a082311461045f57806380a5400114610480578063827f32c01461049557806395d89b41146104b9578063981b24d0146104ce578063a9059cbb146104e6578063bef97c871461050a578063c5bcc4f11461051f578063cae9ca5114610534578063d3ce77fe1461059d578063dd62ed3e146105c1578063df8de3e7146105e8578063e77772fe14610609578063f41e60c51461061e578063f77c479114610638575b60005461014490600160a060020a031661064d565b151561014f57600080fd5b600054604080517ff48c30540000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163f48c3054913491602480830192602092919082900301818588803b1580156101b557600080fd5b505af11580156101c9573d6000803e3d6000fd5b50505050506040513d60208110156101e057600080fd5b505115156101ed57600080fd5b005b3480156101fb57600080fd5b5061020461067a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b5061029d600160a060020a0360043516602435610707565b604080519115158252519081900360200190f35b3480156102bd57600080fd5b506102c6610885565b60408051918252519081900360200190f35b3480156102e457600080fd5b506102c661088b565b3480156102f957600080fd5b5061029d600160a060020a036004358116906024351660443561089c565b34801561032357600080fd5b5061032c610933565b6040805160ff9092168252519081900360200190f35b34801561034e57600080fd5b506101ed600160a060020a036004351661093c565b34801561036f57600080fd5b506102c6600160a060020a0360043516602435610982565b34801561039357600080fd5b50610204610acf565b3480156103a857600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261044394369492936024939284019190819084018382808284375050604080516020601f818a01358b0180359182018390048302840183018552818452989b60ff8b35169b909a909994019750919550918201935091508190840183828082843750949750508435955050505050602001351515610b2a565b60408051600160a060020a039092168252519081900360200190f35b34801561046b57600080fd5b506102c6600160a060020a0360043516610d84565b34801561048c57600080fd5b50610443610d98565b3480156104a157600080fd5b5061029d600160a060020a0360043516602435610da7565b3480156104c557600080fd5b50610204610e73565b3480156104da57600080fd5b506102c6600435610ece565b3480156104f257600080fd5b5061029d600160a060020a0360043516602435610fc2565b34801561051657600080fd5b5061029d610fe1565b34801561052b57600080fd5b506102c6610fea565b34801561054057600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261029d948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610ff09650505050505050565b3480156105a957600080fd5b5061029d600160a060020a036004351660243561110b565b3480156105cd57600080fd5b506102c6600160a060020a03600435811690602435166111d3565b3480156105f457600080fd5b506101ed600160a060020a03600435166111fe565b34801561061557600080fd5b506104436113e5565b34801561062a57600080fd5b506101ed60043515156113f9565b34801561064457600080fd5b50610443611423565b600080600160a060020a03831615156106695760009150610674565b823b90506000811191505b50919050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ff5780601f106106d4576101008083540402835291602001916106ff565b820191906000526020600020905b8154815290600101906020018083116106e257829003601f168201915b505050505081565b600b5460009060ff16151561071b57600080fd5b8115806107495750336000908152600960209081526040808320600160a060020a0387168452909152902054155b151561075457600080fd5b60005461076990600160a060020a031661064d565b1561081d5760008054604080517fda682aeb000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a038781166024830152604482018790529151919092169263da682aeb92606480820193602093909283900390910190829087803b1580156107e657600080fd5b505af11580156107fa573d6000803e3d6000fd5b505050506040513d602081101561081057600080fd5b5051151561081d57600080fd5b336000818152600960209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60075481565b600061089643610ece565b90505b90565b60008054600160a060020a0316331461091e57600b5460ff1615156108c057600080fd5b600160a060020a03841660009081526009602090815260408083203384529091529020548211156108f35750600061092c565b600160a060020a03841660009081526009602090815260408083203384529091529020805483900390555b610929848484611432565b90505b9392505050565b60025460ff1681565b600054600160a060020a0316331461095357600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03821660009081526008602052604081205415806109de5750600160a060020a0383166000908152600860205260408120805484929081106109c757fe5b6000918252602090912001546001608060020a0316115b15610aa657600554600160a060020a031615610a9e57600554600654600160a060020a0390911690634ee2cd7e908590610a19908690611624565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b505050506040513d6020811015610a9557600080fd5b5051905061087f565b50600061087f565b600160a060020a0383166000908152600860205260409020610ac8908361163a565b905061087f565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ff5780601f106106d4576101008083540402835291602001916106ff565b600080831515610b38574393505b600b546040517f5b7b72c100000000000000000000000000000000000000000000000000000000815230600482018181526024830188905260ff8a16606484015286151560a484015260c0604484019081528b5160c48501528b51610100909504600160a060020a031694635b7b72c1948a938e938e938e938d939291608482019160e40190602089019080838360005b83811015610be1578181015183820152602001610bc9565b50505050905090810190601f168015610c0e5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610c41578181015183820152602001610c29565b50505050905090810190601f168015610c6e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015610c9357600080fd5b505af1158015610ca7573d6000803e3d6000fd5b505050506040513d6020811015610cbd57600080fd5b5051604080517f3cebb8230000000000000000000000000000000000000000000000000000000081523360048201529051919250600160a060020a03831691633cebb8239160248082019260009290919082900301818387803b158015610d2357600080fd5b505af1158015610d37573d6000803e3d6000fd5b5050604080518781529051600160a060020a03851693507f086c875b377f900b07ce03575813022f05dd10ed7640b5282cf6d3c3fc352ade92509081900360200190a29695505050505050565b6000610d908243610982565b90505b919050565b600554600160a060020a031681565b6000805481908190600160a060020a03163314610dc357600080fd5b610dcb61088b565b9150838201821115610ddc57600080fd5b610de585610d84565b9050838101811115610df657600080fd5b610e03600a858401611799565b600160a060020a0385166000908152600860205260409020610e2790828601611799565b604080518581529051600160a060020a038716916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3506001949350505050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ff5780601f106106d4576101008083540402835291602001916106ff565b600a546000901580610f03575081600a6000815481101515610eec57fe5b6000918252602090912001546001608060020a0316115b15610fb057600554600160a060020a031615610fa857600554600654600160a060020a039091169063981b24d090610f3c908590611624565b6040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015610f7557600080fd5b505af1158015610f89573d6000803e3d6000fd5b505050506040513d6020811015610f9f57600080fd5b50519050610d93565b506000610d93565b610fbb600a8361163a565b9050610d93565b600b5460009060ff161515610fd657600080fd5b61092c338484611432565b600b5460ff1681565b60065481565b6000610ffc8484610707565b151561100757600080fd5b6040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b8381101561109a578181015183820152602001611082565b50505050905090810190601f1680156110c75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156110e957600080fd5b505af11580156110fd573d6000803e3d6000fd5b506001979650505050505050565b6000805481908190600160a060020a0316331461112757600080fd5b61112f61088b565b91508382101561113e57600080fd5b61114785610d84565b90508381101561115657600080fd5b611163600a858403611799565b600160a060020a038516600090815260086020526040902061118790858303611799565b604080518581529051600091600160a060020a038816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3506001949350505050565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b600080548190600160a060020a0316331461121857600080fd5b600160a060020a03831615156112695760008054604051600160a060020a0390911691303180156108fc02929091818181858888f19350505050158015611263573d6000803e3d6000fd5b506113e0565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156112cd57600080fd5b505af11580156112e1573d6000803e3d6000fd5b505050506040513d60208110156112f757600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b15801561136d57600080fd5b505af1158015611381573d6000803e3d6000fd5b505050506040513d602081101561139757600080fd5b5050600054604080518381529051600160a060020a03928316928616917ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c919081900360200190a35b505050565b600b546101009004600160a060020a031681565b600054600160a060020a0316331461141057600080fd5b600b805460ff1916911515919091179055565b600054600160a060020a031681565b60008080831515611446576001925061161b565b600654431161145457600080fd5b600160a060020a038516158015906114755750600160a060020a0385163014155b151561148057600080fd5b61148a8643610982565b91508382101561149d576000925061161b565b6000546114b290600160a060020a031661064d565b156115685760008054604080517f4a393149000000000000000000000000000000000000000000000000000000008152600160a060020a038a8116600483015289811660248301526044820189905291519190921692634a39314992606480820193602093909283900390910190829087803b15801561153157600080fd5b505af1158015611545573d6000803e3d6000fd5b505050506040513d602081101561155b57600080fd5b5051151561156857600080fd5b600160a060020a038616600090815260086020526040902061158c90858403611799565b6115968543610982565b90508381018111156115a757600080fd5b600160a060020a03851660009081526008602052604090206115cb90828601611799565b84600160a060020a031686600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600192505b50509392505050565b6000818310611633578161092c565b5090919050565b6000806000808580549050600014156116565760009350611790565b85548690600019810190811061166857fe5b6000918252602090912001546001608060020a031685106116c55785548690600019810190811061169557fe5b60009182526020909120015470010000000000000000000000000000000090046001608060020a03169350611790565b8560008154811015156116d457fe5b6000918252602090912001546001608060020a03168510156116f95760009350611790565b8554600093506000190191505b8282111561175657600260018385010104905084868281548110151561172857fe5b6000918252602090912001546001608060020a03161161174a57809250611751565b6001810391505b611706565b858381548110151561176457fe5b60009182526020909120015470010000000000000000000000000000000090046001608060020a031693505b50505092915050565b8154600090819015806117d2575083544390859060001981019081106117bb57fe5b6000918252602090912001546001608060020a0316105b1561184457835484906117e8826001830161188f565b815481106117f257fe5b600091825260209091200180546001608060020a03858116700100000000000000000000000000000000024382166fffffffffffffffffffffffffffffffff1990931692909217161781559150611889565b83548490600019810190811061185657fe5b600091825260209091200180546001608060020a0380861670010000000000000000000000000000000002911617815590505b50505050565b8154818355818111156113e0576000838152602090206113e091810190830161089991905b808211156118c857600081556001016118b4565b50905600a165627a7a7230582039327b9ef582675b82924f14868316459dbe99c7b4fc77b2c91038a6d1d545a100296572725f6f776e65644e6f744f776e6572000000000000000000000000000000a165627a7a72305820ea5c3c9f3fe0acb4c5845e97158acc3e39c3825eb916d1c5abcc6718ee41d5040029", "sourceMap": "919:8214:0:-;;;269:26:5;;;-1:-1:-1;;269:26:5;;;2758:989:0;5:2:-1;;;;30:1;27;20:12;5:2;2758:989:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3370:6;990:18:9;;998:10;-1:-1:-1;;;;;;990:18:9;;;;;;2094:17:8;:38;;;;-1:-1:-1;;;;;2094:38:8;;;;;;;;;;2142:22;:48;;;;;;;;;;;;2758:989:0;;;;;;;;;;;;;;;;;3370:6;;;;3106:18;;;;3098:27;;;;;;-1:-1:-1;;;;;3143:20:0;;;;3135:29;;;;;;3203:17;;3182;;:38;3174:47;;;;;;3232:12;:48;;-1:-1:-1;;;;;3232:48:0;;;;;-1:-1:-1;;;;;;3232:48:0;;;;;;;;;;3290:14;:32;;;;;-1:-1:-1;;;;;;3290:32:0;;;;;;;3332:9;:22;;;;;;;;;;;;;;;-1:-1:-1;;;3365:376:0;3386:10;:17;3382:1;:21;3365:376;;;3444:10;3455:1;3444:13;;;;;;;;;;;;;;;;;;3424:33;;3491:10;3502:1;3491:13;;;;;;;;;;;;;;;;;;;;3549:14;;3518:56;;;;;;-1:-1:-1;;;;;3549:14:0;;;3518:56;;;;-1:-1:-1;;3518:56:0;;;;;;3491:13;;-1:-1:-1;3518:30:0;;;;;;:56;;;;;;;;;;3549:14;3518:30;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;3518:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3518:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;3588:23:0;;;;;;;:12;3518:56;3588:23;;;;;;;:35;;;;;-1:-1:-1;;;;;;3588:35:0;;;;;;;;3637:30;;;:19;:30;;;;;;:42;;;;;;;;;;3698:32;;;;;;;3588:23;;3698:32;;;;;;;;;3405:3;;;;;3365:376;;;2758:989;;;;;;;;;;919:8214;;;;;;" }, "deployedBytecode": { "object": "6080604052600436106200017a5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631f6eb6e781146200017f5780632af4c31e14620001b35780632b7c5dde14620001d95780633f4ba83a14620002195780634a39314914620002315780635c975abb1462000272578063666a3427146200028a578063710bf32214620002ae57806374041d1f14620002d257806379ba509714620002ea578063824f36f314620003025780638456cb591462000345578063892db057146200035d5780638da5cb5b1462000381578063a142d6081462000399578063af95e2d514620003bd578063ba27f50b14620003e1578063c7c4ff461462000405578063d091b550146200041d578063d836fbe81462000435578063d9caed121462000459578063da682aeb1462000231578063e77772fe1462000486578063e7f4eeeb146200049e578063f3fef3a314620004c2578063f48c305414620004e9578063f5b6123014620004ff575b600080fd5b3480156200018c57600080fd5b506200019762000517565b60408051600160a060020a039092168252519081900360200190f35b348015620001c057600080fd5b50620001d7600160a060020a036004351662000526565b005b348015620001e657600080fd5b50620001d7600160a060020a0360048035821691602480359091169160443591606435916084359182019101356200063a565b3480156200022657600080fd5b50620001d7620009d2565b3480156200023e57600080fd5b506200025e600160a060020a036004358116906024351660443562000a6b565b604080519115158252519081900360200190f35b3480156200027f57600080fd5b506200025e62000a74565b3480156200029757600080fd5b50620001d7600160a060020a036004351662000a7d565b348015620002bb57600080fd5b50620001d7600160a060020a036004351662000b77565b348015620002df57600080fd5b506200019762000c1b565b348015620002f757600080fd5b50620001d762000c2a565b3480156200030f57600080fd5b50620001d760048035600160a060020a0316906024803580820192908101359160443560ff169160643591820191013562000cee565b3480156200035257600080fd5b50620001d762000f40565b3480156200036a57600080fd5b506200025e600160a060020a036004351662000fdb565b3480156200038e57600080fd5b506200019762000ffa565b348015620003a657600080fd5b50620001d7600160a060020a036004351662001009565b348015620003ca57600080fd5b5062000197600160a060020a03600435166200136c565b348015620003ee57600080fd5b5062000197600160a060020a036004351662001387565b3480156200041257600080fd5b5062000197620013a2565b3480156200042a57600080fd5b5062000197620013b1565b3480156200044257600080fd5b50620001d7600160a060020a0360043516620013c0565b3480156200046657600080fd5b50620001d7600160a060020a03600435811690602435166044356200145d565b3480156200049357600080fd5b5062000197620015c0565b348015620004ab57600080fd5b50620001d7600160a060020a0360043516620015d4565b348015620004cf57600080fd5b50620001d7600160a060020a036004351660243562001648565b6200025e600160a060020a036004351662001659565b3480156200050c57600080fd5b50620001976200165f565b600254600160a060020a031681565b60008054600160a060020a0316331462000579576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b600160a060020a0382161515620005da576040805160e560020a62461bcd02815260206004820152601760248201527f6572725f6f776e6564496e76616c696441646472657373000000000000000000604482015290519081900360640190fd5b5060008054600160a060020a03838116600160a060020a031980841691909117808555600180549092169091556040519282169391169183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600754600090600160a060020a031633146200065557600080fd5b50600160a060020a03808616600090815260086020526040902054168015156200067e57600080fd5b604080517f827f32c0000000000000000000000000000000000000000000000000000000008152306004820152602481018790529051600160a060020a0383169163827f32c09160448083019260209291908290030181600087803b158015620006e757600080fd5b505af1158015620006fc573d6000803e3d6000fd5b505050506040513d60208110156200071357600080fd5b5050600654604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a0392831660248201529051879284169163dd62ed3e9160448083019260209291908290030181600087803b1580156200078457600080fd5b505af115801562000799573d6000803e3d6000fd5b505050506040513d6020811015620007b057600080fd5b50511015620008fa57600654604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260006024820181905291519284169263095ea7b392604480840193602093929083900390910190829087803b1580156200082c57600080fd5b505af115801562000841573d6000803e3d6000fd5b505050506040513d60208110156200085857600080fd5b5050600654604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152600019602482015290519183169163095ea7b3916044808201926020929091908290030181600087803b158015620008cb57600080fd5b505af1158015620008e0573d6000803e3d6000fd5b505050506040513d6020811015620008f757600080fd5b50505b600654604051600160a060020a039091169084908490808383808284378201915050925050506000604051808303816000865af191505015156200093d57600080fd5b86600160a060020a03167fff628606f5860a17beddc73a7046379d2539e0f878cb934e43ce2c5150bc91a587878787876040518086600160a060020a0316600160a060020a03168152602001858152602001846000191660001916815260200180602001828103825284848281815260200192508082843760405192018290039850909650505050505050a250505050505050565b600054600160a060020a0316331462000a24576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b60055460ff16151562000a3657600080fd5b6005805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60019392505050565b60055460ff1681565b600054600160a060020a0316331462000acf576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b610dac600160a060020a0382161462000b32576040805160e560020a62461bcd02815260206004820152601360248201527f6572725f6f776e6564496e76616c696444616300000000000000000000000000604482015290519081900360640190fd5b60008054600160a060020a031990811682556001805490911690556040517f94e8b32e01b9eedfddd778ffbd051a7718cdc14781702884561162dca6f74dbb9190a150565b600054600160a060020a0316331462000bc9576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b60018054600160a060020a031916600160a060020a03838116919091179182905560405191169033907f13a4b3bc0d5234dd3d87c9f1557d8faefa37986da62c36ba49309e2fb2c9aec490600090a350565b600654600160a060020a031681565b600154600090600160a060020a0316331462000c90576040805160e560020a62461bcd02815260206004820152601560248201527f6572725f6f776e65644e6f7443616e6469646174650000000000000000000000604482015290519081900360640190fd5b506000805460018054600160a060020a03808216600160a060020a03198086169190911780875592169092556040519282169391169183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60008054600160a060020a0316331462000d41576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b600160a060020a03808816600090815260086020526040902054161562000d6757600080fd5b6005546101009004600160a060020a03166000808888888888600162000d8c6200166e565b600160a060020a03808b168252891660208201526040810188905260ff8516608082015281151560c082015260e06060820181815290820187905260a0820161010083018989808284379091018481038352868152602001905086868082843782019150509b505050505050505050505050604051809103906000f08015801562000e1b573d6000803e3d6000fd5b50600654604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152600019602482015290519293509083169163095ea7b3916044808201926020929091908290030181600087803b15801562000e9057600080fd5b505af115801562000ea5573d6000803e3d6000fd5b505050506040513d602081101562000ebc57600080fd5b5050600160a060020a0380881660008181526008602090815260408083208054958716600160a060020a031996871681179091558084526009835292819020805490951684179094558351918252925191927fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e792918290030190a250505050505050565b600054600160a060020a0316331462000f92576040805160e560020a62461bcd028152602060048201526011602482015260008051602062003174833981519152604482015290519081900360640190fd5b60055460ff161562000fa357600080fd5b600580