@gooddollar/goodprotocol 2.0.34-beta.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/artifacts/abis/Faucet.min.json +1 -1
  2. package/artifacts/abis/FuseFaucetV2.min.json +1 -1
  3. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  4. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +34 -2
  5. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  6. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +34 -2
  7. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  8. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  9. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  10. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
  11. package/contracts/fuseFaucet/Faucet.sol +6 -0
  12. package/contracts/fuseFaucet/FuseFaucetV2.sol +10 -0
  13. package/contracts/utils/ProxyFactory1967.sol +19 -16
  14. package/hardhat.config.ts +25 -20
  15. package/package.json +1 -1
  16. package/releases/olddao.json +1 -1
  17. package/scripts/fv.ts +0 -2
  18. package/scripts/multichain-deploy/fulldeploy.sh +17 -17
  19. package/scripts/proposals/gip-25-xdc-upgrade-ubi.ts +443 -0
  20. package/scripts/upgrades/upgradeFaucet.ts +46 -0
  21. package/types/contracts/fuseFaucet/Faucet.ts +43 -0
  22. package/types/contracts/fuseFaucet/FuseFaucetV2.ts +43 -0
  23. package/types/factories/contracts/fuseFaucet/Faucet__factory.ts +33 -1
  24. package/types/factories/contracts/fuseFaucet/FuseFaucetV2__factory.ts +33 -1
  25. package/types/factories/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy__factory.ts +1 -1
  26. package/types/factories/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967__factory.ts +1 -1
  27. package/contracts/IQuoter.sol +0 -108
  28. package/scripts/multichain-deploy/verify.ts +0 -41
  29. package/scripts/proposals/gip-25-xdc-upgrade.ts +0 -438
@@ -47,6 +47,38 @@
47
47
  "name": "WalletTopped",
48
48
  "type": "event"
49
49
  },
50
+ {
51
+ "inputs": [
52
+ {
53
+ "internalType": "address",
54
+ "name": "_user",
55
+ "type": "address"
56
+ }
57
+ ],
58
+ "name": "banAddress",
59
+ "outputs": [],
60
+ "stateMutability": "nonpayable",
61
+ "type": "function"
62
+ },
63
+ {
64
+ "inputs": [
65
+ {
66
+ "internalType": "address",
67
+ "name": "",
68
+ "type": "address"
69
+ }
70
+ ],
71
+ "name": "bans",
72
+ "outputs": [
73
+ {
74
+ "internalType": "uint256",
75
+ "name": "",
76
+ "type": "uint256"
77
+ }
78
+ ],
79
+ "stateMutability": "view",
80
+ "type": "function"
81
+ },
50
82
  {
51
83
  "inputs": [
52
84
  {
@@ -537,8 +569,8 @@
537
569
  "type": "receive"
538
570
  }
539
571
  ],
540
- "bytecode": "0x608060405234801561001057600080fd5b506120d5806100206000396000f3fe6080604052600436106101775760003560e01c806315126799146101835780631ece9b12146101ab5780632f5a3d15146101d857806336afc6fa146101ee5780633771dcf8146102035780633e6326fc1461022557806354fd4d50146102455780635b61e2c11461027e5780635bc758e2146102bd5780635c9302c9146102d35780636bdd7242146102e957806370c635911461030957806378e97925146103295780637befab101461033f5780638406c0791461036357806389b08f111461038a5780638da5cb5b146103f357806393a08de414610413578063a4c0ed3614610430578063aa31e45914610460578063aaab4c1d14610490578063c25673d5146104c3578063c573cb40146104d8578063c5da1033146104f8578063c8eb754914610530578063cce987d414610550578063d1c8e12514610574578063e97eefd214610594578063f000999e146105b4578063f83ecf99146105d4578063f84b40f5146105f4578063fe173b971461060a57600080fd5b3661017e57005b600080fd5b34801561018f57600080fd5b50610198610631565b6040519081526020015b60405180910390f35b3480156101b757600080fd5b50600b546101cb906001600160a01b031681565b6040516101a29190611b3e565b3480156101e457600080fd5b5061019860025481565b3480156101fa57600080fd5b506101cb61065a565b34801561020f57600080fd5b5061022361021e366004611b6a565b6106e0565b005b34801561023157600080fd5b506006546101cb906001600160a01b031681565b34801561025157600080fd5b50600d5461026990600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101a2565b34801561028a57600080fd5b50600b546102a590600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016101a2565b3480156102c957600080fd5b5061019860035481565b3480156102df57600080fd5b5061019860055481565b3480156102f557600080fd5b50610223610304366004611baa565b610c70565b34801561031557600080fd5b50610223610324366004611bc5565b610cc6565b34801561033557600080fd5b5061019860045481565b34801561034b57600080fd5b50600a5461026990600160601b900463ffffffff1681565b34801561036f57600080fd5b50600c546101cb90600160401b90046001600160a01b031681565b34801561039657600080fd5b506103cf6103a5366004611b6a565b6009602052600090815260409020546001600160801b03811690600160801b900463ffffffff1682565b604080516001600160801b03909316835263ffffffff9091166020830152016101a2565b3480156103ff57600080fd5b50600d546101cb906001600160a01b031681565b34801561041f57600080fd5b50600a546102699063ffffffff1681565b34801561043c57600080fd5b5061045061044b366004611bde565b610d06565b60405190151581526020016101a2565b34801561046c57600080fd5b5061045061047b366004611b6a565b60086020526000908152604090205460ff1681565b34801561049c57600080fd5b50600d546104b190600160c01b900460ff1681565b60405160ff90911681526020016101a2565b3480156104cf57600080fd5b50610223610f3d565b3480156104e457600080fd5b50600c546102a5906001600160401b031681565b34801561050457600080fd5b50610198610513366004611c66565b600760209081526000928352604080842090915290825290205481565b34801561053c57600080fd5b5061022361054b366004611c96565b610ff2565b34801561055c57600080fd5b50600a5461026990600160801b900463ffffffff1681565b34801561058057600080fd5b5061022361058f366004611cb9565b61103c565b3480156105a057600080fd5b506104506105af366004611b6a565b611220565b3480156105c057600080fd5b506102236105cf366004611d11565b6115e7565b3480156105e057600080fd5b506102236105ef366004611b6a565b6116e5565b34801561060057600080fd5b5061019860015481565b34801561061657600080fd5b50600a546102a590600160201b90046001600160401b031681565b600a5460025460009161065591600160201b9091046001600160401b031690611d72565b905090565b60065460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa1580156106bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106559190611d8f565b60005a90508160006106f061065a565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b815260040161071b9190611b3e565b602060405180830381865afa158015610738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075c9190611d8f565b90506001600160a01b038116156107735780610775565b815b600554909250610783611788565b806005541461079d57600c80546001600160401b03191690555b6005546001600160a01b0384166000908152600960205260409020546001600160801b0390811691161415806107ff5750600a546001600160a01b03841660009081526009602052604090205463ffffffff918216600160801b909104909116105b6108455760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526008602052604090205460ff161580156108855750600b54600c546001600160401b03600160a01b90920482169116105b8061089857506001600160a01b03821615155b6108f35760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b606482015260840161083c565b600060076005546109049190611dc2565b6001600160a01b0385166000908152600960205260408120546005549293509091610938916001600160801b031690611dd6565b905060078111610948578061094b565b60075b905081811161095a5780610965565b610965826001611de9565b9050600081610975846001611de9565b61097f9190611dd6565b90505b8281116109f7576001600160a01b038616600090815260096020526040812060010182600781106109b5576109b5611dfc565b600291828204019190066010026101000a8154816001600160801b0302191690836001600160801b0316021790555080806109ef90611e12565b915050610982565b506000805b838111610a6d576001600160a01b03871660009081526009602052604090206001018160078110610a2f57610a2f611dfc565b600291828204019190066010029054906101000a90046001600160801b031682610a599190611e2b565b915080610a6581611e12565b9150506109fc565b50600a54600154600160601b820463ffffffff1691610a9d91600160201b9091046001600160401b031690611d72565b610aa79190611d72565b816001600160801b031610610b1b5760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b606482015260840161083c565b876000610b2661065a565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610b519190611b3e565b602060405180830381865afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b929190611d8f565b6001600160a01b0316141580610bb95750600c54600160401b90046001600160a01b031633145b610bf65760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161083c565b610bff896117a9565b505050505050505a610c119082611dd6565b610c1d9061a410611de9565b600a5490915033906108fc90610c4390600160201b90046001600160401b031684611d72565b6040518115909202916000818181858888f19350505050158015610c6b573d6000803e3d6000fd5b505050565b600d546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161083c90611e52565b600a80546001600160401b03909216600160201b02600160201b600160601b0319909216919091179055565b600d546001600160a01b03163314610cf05760405162461bcd60e51b815260040161083c90611e52565b6002818155610d00908290611d72565b60015550565b600a54600090600160801b900463ffffffff16841115610d535760405162461bcd60e51b8152602060048201526008602482015267736c69707061676560c01b604482015260640161083c565b6000610d6183850185611b6a565b60408051600280825260608201835292935083926000926020830190803683370190505090503381600081518110610d9b57610d9b611dfc565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1d9190611d8f565b81600181518110610e3057610e30611dfc565b6001600160a01b03928316602091820292909201015260405163095ea7b360e01b815290841660048201526000196024820152339063095ea7b3906044016020604051808303816000875af1158015610e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb19190611e8b565b506040516318cbafe560e01b81526001600160a01b038316906318cbafe590610ee7908a9060009086908e904290600401611ead565b6000604051808303816000875af1158015610f06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f2e9190810190611f1e565b50600198975050505050505050565b6003610f4a600182611fdb565b600d54600160a01b900463ffffffff908116911614610f7b5760405162461bcd60e51b815260040161083c90611ff8565b600d8054600160a01b900463ffffffff16906014610f9883612027565b91906101000a81548163ffffffff021916908363ffffffff16021790555050600a60049054906101000a90046001600160401b03166001600160401b0316600254610fe3919061204a565b6002818155610d009190611d72565b600d546001600160a01b0316331461101c5760405162461bcd60e51b815260040161083c90611e52565b600d805460ff909216600160c01b0260ff60c01b19909216919091179055565b600054610100900460ff161580801561105c5750600054600160ff909116105b806110765750303b158015611076575060005460ff166001145b6110d95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161083c565b6000805460ff1916600117905580156110fc576000805461ff0019166101001790555b600c8054600160401b600160e01b031916600160401b6001600160a01b03861602179055600a8054600160201b600160601b031916600160201b6001600160401b0387811691909102919091179091558216600281815561115d9190611d72565b600155600a805442600455600680546001600160a01b0319166001600160a01b03891617905563ffffffff600160601b03600160a01b03191660036501f40000000160611b01179055600b8054600160a01b600160e01b03191661027160a31b179055600d805460ff60c01b1916600f60c01b1790558015611219576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000816001600160a01b031631611235610631565b101561124357506000919050565b6000826001600160a01b031631611258610631565b6112629190611dd6565b600d54909150600160c01b900460ff1661127a610631565b611285836064611d72565b61128f919061204a565b101561129e5750600092915050565b60006112a861065a565b6001600160a01b0316632d0e9b46856040518263ffffffff1660e01b81526004016112d39190611b3e565b602060405180830381865afa1580156112f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113149190611d8f565b90506001600160a01b0381161561132b578061132d565b835b9350600062015180600454426113439190611dd6565b61134d919061204a565b6001600160a01b038616600090815260096020526040812054919250906001600160801b0380841691161415806113aa57506001600160a01b0386166000908152600960205260409020546003600160801b90910463ffffffff16105b801561140457506001600160a01b03861660009081526008602052604090205460ff161580156113f15750600b54600c546001600160401b03600160a01b90920482169116105b8061140457506001600160a01b03831615155b6001600160a01b038716600090815260096020526040808220815160e0810192839052939450919291600101906007908285855b82829054906101000a90046001600160801b03166001600160801b031681526020019060100190602082600f010492830192600103820291508084116114385790505050505050905060006007846114909190611dc2565b6001600160a01b038916600090815260096020526040812054919250906114c0906001600160801b031686611dd6565b9050600781116114d057806114d3565b60075b90508181116114e257806114ed565b6114ed826001611de9565b90506000816114fd846001611de9565b6115079190611dd6565b90505b82811161154a57600084826007811061152557611525611dfc565b6001600160801b0390921660209290920201528061154281611e12565b91505061150a565b506000805b83811161158b5784816007811061156857611568611dfc565b60200201516115779083611e2b565b91508061158381611e12565b91505061154f565b508480156115d95750600a54600154600160601b820463ffffffff16916115c391600160201b9091046001600160401b031690611d72565b6115cd9190611d72565b816001600160801b0316105b9a9950505050505050505050565b60016115f38180611fdb565b600d54600160a01b900463ffffffff9081169116146116245760405162461bcd60e51b815260040161083c90611ff8565b600d8054600160a01b900463ffffffff1690601461164183612027565b82546101009290920a63ffffffff81810219909316919092169190910217905550600d80546001600160a01b0319166001600160a01b038516179055600b54600160a01b90046001600160401b03166000036116b257600b8054600160a01b600160e01b03191661027160a31b1790555b600c8054600160401b600160e01b031916600160401b6001600160a01b038716021790556116df826116e5565b50505050565b60026116f2600182611fdb565b600d54600160a01b900463ffffffff9081169116146117235760405162461bcd60e51b815260040161083c90611ff8565b600d8054600160a01b900463ffffffff1690601461174083612027565b82546101009290920a63ffffffff81810219909316919092169190910217905550600680546001600160a01b0319166001600160a01b038416179055611784610f3d565b5050565b620151806004544261179a9190611dd6565b6117a4919061204a565b600555565b8060006117b461065a565b6001600160a01b0316632d0e9b46846040518263ffffffff1660e01b81526004016117df9190611b3e565b602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118209190611d8f565b90506001600160a01b038116156118375780611839565b825b92506000836001600160a01b031631611850610631565b61185a9190611dd6565b600d54909150600160c01b900460ff16611872610631565b61187d836064611d72565b611887919061204a565b10156118c15760405162461bcd60e51b815260206004820152600960248201526806c6f7720746f546f760bc1b604482015260640161083c565b600060076005546118d29190611dc2565b6005546001600160a01b0387166000908152600960205260409020549192506001600160801b0390811691160361195f576001600160a01b038516600090815260096020526040902080546001919060109061193c908490600160801b900463ffffffff1661205e565b92506101000a81548163ffffffff021916908363ffffffff16021790555061198c565b6001600160a01b0385166000908152600960205260409020805463ffffffff60801b1916600160801b1790555b6005546001600160a01b038616600090815260096020526040902080546001600160801b0319166001600160801b03909216919091178155829060010182600781106119da576119da611dfc565b600291828204019190066010028282829054906101000a90046001600160801b0316611a069190611e2b565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b03851660009081526008602052604090205460ff16158015611a5957506001600160a01b038316155b15611a9d57600c80546001600160401b0316906000611a778361207b565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6001600160a01b03808616600090815260086020526040808220805460ff19166001179055519186169184156108fc0291859190818181858888f19350505050158015611aee573d6000803e3d6000fd5b50604080518381526001600160a01b0385811660208301523392908716917f7872034fbcc87890e73d66eac55389e0ffdba157b89a73bd2011157ebac1d66e910160405180910390a35050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611b6757600080fd5b50565b600060208284031215611b7c57600080fd5b8135611b8781611b52565b9392505050565b80356001600160401b0381168114611ba557600080fd5b919050565b600060208284031215611bbc57600080fd5b611b8782611b8e565b600060208284031215611bd757600080fd5b5035919050565b60008060008060608587031215611bf457600080fd5b8435611bff81611b52565b93506020850135925060408501356001600160401b0380821115611c2257600080fd5b818701915087601f830112611c3657600080fd5b813581811115611c4557600080fd5b886020828501011115611c5757600080fd5b95989497505060200194505050565b60008060408385031215611c7957600080fd5b823591506020830135611c8b81611b52565b809150509250929050565b600060208284031215611ca857600080fd5b813560ff81168114611b8757600080fd5b60008060008060808587031215611ccf57600080fd5b8435611cda81611b52565b9350611ce860208601611b8e565b92506040850135611cf881611b52565b9150611d0660608601611b8e565b905092959194509250565b600080600060608486031215611d2657600080fd5b8335611d3181611b52565b92506020840135611d4181611b52565b91506040840135611d5181611b52565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611d8957611d89611d5c565b92915050565b600060208284031215611da157600080fd5b8151611b8781611b52565b634e487b7160e01b600052601260045260246000fd5b600082611dd157611dd1611dac565b500690565b81810381811115611d8957611d89611d5c565b80820180821115611d8957611d89611d5c565b634e487b7160e01b600052603260045260246000fd5b600060018201611e2457611e24611d5c565b5060010190565b6001600160801b03818116838216019080821115611e4b57611e4b611d5c565b5092915050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611e9d57600080fd5b81518015158114611b8757600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611efd5784516001600160a01b031683529383019391830191600101611ed8565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020808385031215611f3157600080fd5b82516001600160401b0380821115611f4857600080fd5b818501915085601f830112611f5c57600080fd5b815181811115611f6e57611f6e611e75565b8060051b604051601f19603f83011681018181108582111715611f9357611f93611e75565b604052918252848201925083810185019188831115611fb157600080fd5b938501935b82851015611fcf57845184529385019392850192611fb6565b98975050505050505050565b63ffffffff828116828216039080821115611e4b57611e4b611d5c565b6020808252601590820152743bb937b733903ab833b930b232903b32b939b4b7b760591b604082015260600190565b600063ffffffff80831681810361204057612040611d5c565b6001019392505050565b60008261205957612059611dac565b500490565b63ffffffff818116838216019080821115611e4b57611e4b611d5c565b60006001600160401b038281166002600160401b0319810161204057612040611d5c56fea2646970667358221220e7353ea7e0406e35f710e0a5cbc700032a901ee844b91194a60c9ecda4f27cd064736f6c63430008130033",
541
- "deployedBytecode": "0x6080604052600436106101775760003560e01c806315126799146101835780631ece9b12146101ab5780632f5a3d15146101d857806336afc6fa146101ee5780633771dcf8146102035780633e6326fc1461022557806354fd4d50146102455780635b61e2c11461027e5780635bc758e2146102bd5780635c9302c9146102d35780636bdd7242146102e957806370c635911461030957806378e97925146103295780637befab101461033f5780638406c0791461036357806389b08f111461038a5780638da5cb5b146103f357806393a08de414610413578063a4c0ed3614610430578063aa31e45914610460578063aaab4c1d14610490578063c25673d5146104c3578063c573cb40146104d8578063c5da1033146104f8578063c8eb754914610530578063cce987d414610550578063d1c8e12514610574578063e97eefd214610594578063f000999e146105b4578063f83ecf99146105d4578063f84b40f5146105f4578063fe173b971461060a57600080fd5b3661017e57005b600080fd5b34801561018f57600080fd5b50610198610631565b6040519081526020015b60405180910390f35b3480156101b757600080fd5b50600b546101cb906001600160a01b031681565b6040516101a29190611b3e565b3480156101e457600080fd5b5061019860025481565b3480156101fa57600080fd5b506101cb61065a565b34801561020f57600080fd5b5061022361021e366004611b6a565b6106e0565b005b34801561023157600080fd5b506006546101cb906001600160a01b031681565b34801561025157600080fd5b50600d5461026990600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101a2565b34801561028a57600080fd5b50600b546102a590600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016101a2565b3480156102c957600080fd5b5061019860035481565b3480156102df57600080fd5b5061019860055481565b3480156102f557600080fd5b50610223610304366004611baa565b610c70565b34801561031557600080fd5b50610223610324366004611bc5565b610cc6565b34801561033557600080fd5b5061019860045481565b34801561034b57600080fd5b50600a5461026990600160601b900463ffffffff1681565b34801561036f57600080fd5b50600c546101cb90600160401b90046001600160a01b031681565b34801561039657600080fd5b506103cf6103a5366004611b6a565b6009602052600090815260409020546001600160801b03811690600160801b900463ffffffff1682565b604080516001600160801b03909316835263ffffffff9091166020830152016101a2565b3480156103ff57600080fd5b50600d546101cb906001600160a01b031681565b34801561041f57600080fd5b50600a546102699063ffffffff1681565b34801561043c57600080fd5b5061045061044b366004611bde565b610d06565b60405190151581526020016101a2565b34801561046c57600080fd5b5061045061047b366004611b6a565b60086020526000908152604090205460ff1681565b34801561049c57600080fd5b50600d546104b190600160c01b900460ff1681565b60405160ff90911681526020016101a2565b3480156104cf57600080fd5b50610223610f3d565b3480156104e457600080fd5b50600c546102a5906001600160401b031681565b34801561050457600080fd5b50610198610513366004611c66565b600760209081526000928352604080842090915290825290205481565b34801561053c57600080fd5b5061022361054b366004611c96565b610ff2565b34801561055c57600080fd5b50600a5461026990600160801b900463ffffffff1681565b34801561058057600080fd5b5061022361058f366004611cb9565b61103c565b3480156105a057600080fd5b506104506105af366004611b6a565b611220565b3480156105c057600080fd5b506102236105cf366004611d11565b6115e7565b3480156105e057600080fd5b506102236105ef366004611b6a565b6116e5565b34801561060057600080fd5b5061019860015481565b34801561061657600080fd5b50600a546102a590600160201b90046001600160401b031681565b600a5460025460009161065591600160201b9091046001600160401b031690611d72565b905090565b60065460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa1580156106bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106559190611d8f565b60005a90508160006106f061065a565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b815260040161071b9190611b3e565b602060405180830381865afa158015610738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075c9190611d8f565b90506001600160a01b038116156107735780610775565b815b600554909250610783611788565b806005541461079d57600c80546001600160401b03191690555b6005546001600160a01b0384166000908152600960205260409020546001600160801b0390811691161415806107ff5750600a546001600160a01b03841660009081526009602052604090205463ffffffff918216600160801b909104909116105b6108455760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526008602052604090205460ff161580156108855750600b54600c546001600160401b03600160a01b90920482169116105b8061089857506001600160a01b03821615155b6108f35760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b606482015260840161083c565b600060076005546109049190611dc2565b6001600160a01b0385166000908152600960205260408120546005549293509091610938916001600160801b031690611dd6565b905060078111610948578061094b565b60075b905081811161095a5780610965565b610965826001611de9565b9050600081610975846001611de9565b61097f9190611dd6565b90505b8281116109f7576001600160a01b038616600090815260096020526040812060010182600781106109b5576109b5611dfc565b600291828204019190066010026101000a8154816001600160801b0302191690836001600160801b0316021790555080806109ef90611e12565b915050610982565b506000805b838111610a6d576001600160a01b03871660009081526009602052604090206001018160078110610a2f57610a2f611dfc565b600291828204019190066010029054906101000a90046001600160801b031682610a599190611e2b565b915080610a6581611e12565b9150506109fc565b50600a54600154600160601b820463ffffffff1691610a9d91600160201b9091046001600160401b031690611d72565b610aa79190611d72565b816001600160801b031610610b1b5760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b606482015260840161083c565b876000610b2661065a565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610b519190611b3e565b602060405180830381865afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b929190611d8f565b6001600160a01b0316141580610bb95750600c54600160401b90046001600160a01b031633145b610bf65760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161083c565b610bff896117a9565b505050505050505a610c119082611dd6565b610c1d9061a410611de9565b600a5490915033906108fc90610c4390600160201b90046001600160401b031684611d72565b6040518115909202916000818181858888f19350505050158015610c6b573d6000803e3d6000fd5b505050565b600d546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161083c90611e52565b600a80546001600160401b03909216600160201b02600160201b600160601b0319909216919091179055565b600d546001600160a01b03163314610cf05760405162461bcd60e51b815260040161083c90611e52565b6002818155610d00908290611d72565b60015550565b600a54600090600160801b900463ffffffff16841115610d535760405162461bcd60e51b8152602060048201526008602482015267736c69707061676560c01b604482015260640161083c565b6000610d6183850185611b6a565b60408051600280825260608201835292935083926000926020830190803683370190505090503381600081518110610d9b57610d9b611dfc565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1d9190611d8f565b81600181518110610e3057610e30611dfc565b6001600160a01b03928316602091820292909201015260405163095ea7b360e01b815290841660048201526000196024820152339063095ea7b3906044016020604051808303816000875af1158015610e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb19190611e8b565b506040516318cbafe560e01b81526001600160a01b038316906318cbafe590610ee7908a9060009086908e904290600401611ead565b6000604051808303816000875af1158015610f06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f2e9190810190611f1e565b50600198975050505050505050565b6003610f4a600182611fdb565b600d54600160a01b900463ffffffff908116911614610f7b5760405162461bcd60e51b815260040161083c90611ff8565b600d8054600160a01b900463ffffffff16906014610f9883612027565b91906101000a81548163ffffffff021916908363ffffffff16021790555050600a60049054906101000a90046001600160401b03166001600160401b0316600254610fe3919061204a565b6002818155610d009190611d72565b600d546001600160a01b0316331461101c5760405162461bcd60e51b815260040161083c90611e52565b600d805460ff909216600160c01b0260ff60c01b19909216919091179055565b600054610100900460ff161580801561105c5750600054600160ff909116105b806110765750303b158015611076575060005460ff166001145b6110d95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161083c565b6000805460ff1916600117905580156110fc576000805461ff0019166101001790555b600c8054600160401b600160e01b031916600160401b6001600160a01b03861602179055600a8054600160201b600160601b031916600160201b6001600160401b0387811691909102919091179091558216600281815561115d9190611d72565b600155600a805442600455600680546001600160a01b0319166001600160a01b03891617905563ffffffff600160601b03600160a01b03191660036501f40000000160611b01179055600b8054600160a01b600160e01b03191661027160a31b179055600d805460ff60c01b1916600f60c01b1790558015611219576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000816001600160a01b031631611235610631565b101561124357506000919050565b6000826001600160a01b031631611258610631565b6112629190611dd6565b600d54909150600160c01b900460ff1661127a610631565b611285836064611d72565b61128f919061204a565b101561129e5750600092915050565b60006112a861065a565b6001600160a01b0316632d0e9b46856040518263ffffffff1660e01b81526004016112d39190611b3e565b602060405180830381865afa1580156112f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113149190611d8f565b90506001600160a01b0381161561132b578061132d565b835b9350600062015180600454426113439190611dd6565b61134d919061204a565b6001600160a01b038616600090815260096020526040812054919250906001600160801b0380841691161415806113aa57506001600160a01b0386166000908152600960205260409020546003600160801b90910463ffffffff16105b801561140457506001600160a01b03861660009081526008602052604090205460ff161580156113f15750600b54600c546001600160401b03600160a01b90920482169116105b8061140457506001600160a01b03831615155b6001600160a01b038716600090815260096020526040808220815160e0810192839052939450919291600101906007908285855b82829054906101000a90046001600160801b03166001600160801b031681526020019060100190602082600f010492830192600103820291508084116114385790505050505050905060006007846114909190611dc2565b6001600160a01b038916600090815260096020526040812054919250906114c0906001600160801b031686611dd6565b9050600781116114d057806114d3565b60075b90508181116114e257806114ed565b6114ed826001611de9565b90506000816114fd846001611de9565b6115079190611dd6565b90505b82811161154a57600084826007811061152557611525611dfc565b6001600160801b0390921660209290920201528061154281611e12565b91505061150a565b506000805b83811161158b5784816007811061156857611568611dfc565b60200201516115779083611e2b565b91508061158381611e12565b91505061154f565b508480156115d95750600a54600154600160601b820463ffffffff16916115c391600160201b9091046001600160401b031690611d72565b6115cd9190611d72565b816001600160801b0316105b9a9950505050505050505050565b60016115f38180611fdb565b600d54600160a01b900463ffffffff9081169116146116245760405162461bcd60e51b815260040161083c90611ff8565b600d8054600160a01b900463ffffffff1690601461164183612027565b82546101009290920a63ffffffff81810219909316919092169190910217905550600d80546001600160a01b0319166001600160a01b038516179055600b54600160a01b90046001600160401b03166000036116b257600b8054600160a01b600160e01b03191661027160a31b1790555b600c8054600160401b600160e01b031916600160401b6001600160a01b038716021790556116df826116e5565b50505050565b60026116f2600182611fdb565b600d54600160a01b900463ffffffff9081169116146117235760405162461bcd60e51b815260040161083c90611ff8565b600d8054600160a01b900463ffffffff1690601461174083612027565b82546101009290920a63ffffffff81810219909316919092169190910217905550600680546001600160a01b0319166001600160a01b038416179055611784610f3d565b5050565b620151806004544261179a9190611dd6565b6117a4919061204a565b600555565b8060006117b461065a565b6001600160a01b0316632d0e9b46846040518263ffffffff1660e01b81526004016117df9190611b3e565b602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118209190611d8f565b90506001600160a01b038116156118375780611839565b825b92506000836001600160a01b031631611850610631565b61185a9190611dd6565b600d54909150600160c01b900460ff16611872610631565b61187d836064611d72565b611887919061204a565b10156118c15760405162461bcd60e51b815260206004820152600960248201526806c6f7720746f546f760bc1b604482015260640161083c565b600060076005546118d29190611dc2565b6005546001600160a01b0387166000908152600960205260409020549192506001600160801b0390811691160361195f576001600160a01b038516600090815260096020526040902080546001919060109061193c908490600160801b900463ffffffff1661205e565b92506101000a81548163ffffffff021916908363ffffffff16021790555061198c565b6001600160a01b0385166000908152600960205260409020805463ffffffff60801b1916600160801b1790555b6005546001600160a01b038616600090815260096020526040902080546001600160801b0319166001600160801b03909216919091178155829060010182600781106119da576119da611dfc565b600291828204019190066010028282829054906101000a90046001600160801b0316611a069190611e2b565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b03851660009081526008602052604090205460ff16158015611a5957506001600160a01b038316155b15611a9d57600c80546001600160401b0316906000611a778361207b565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6001600160a01b03808616600090815260086020526040808220805460ff19166001179055519186169184156108fc0291859190818181858888f19350505050158015611aee573d6000803e3d6000fd5b50604080518381526001600160a01b0385811660208301523392908716917f7872034fbcc87890e73d66eac55389e0ffdba157b89a73bd2011157ebac1d66e910160405180910390a35050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611b6757600080fd5b50565b600060208284031215611b7c57600080fd5b8135611b8781611b52565b9392505050565b80356001600160401b0381168114611ba557600080fd5b919050565b600060208284031215611bbc57600080fd5b611b8782611b8e565b600060208284031215611bd757600080fd5b5035919050565b60008060008060608587031215611bf457600080fd5b8435611bff81611b52565b93506020850135925060408501356001600160401b0380821115611c2257600080fd5b818701915087601f830112611c3657600080fd5b813581811115611c4557600080fd5b886020828501011115611c5757600080fd5b95989497505060200194505050565b60008060408385031215611c7957600080fd5b823591506020830135611c8b81611b52565b809150509250929050565b600060208284031215611ca857600080fd5b813560ff81168114611b8757600080fd5b60008060008060808587031215611ccf57600080fd5b8435611cda81611b52565b9350611ce860208601611b8e565b92506040850135611cf881611b52565b9150611d0660608601611b8e565b905092959194509250565b600080600060608486031215611d2657600080fd5b8335611d3181611b52565b92506020840135611d4181611b52565b91506040840135611d5181611b52565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611d8957611d89611d5c565b92915050565b600060208284031215611da157600080fd5b8151611b8781611b52565b634e487b7160e01b600052601260045260246000fd5b600082611dd157611dd1611dac565b500690565b81810381811115611d8957611d89611d5c565b80820180821115611d8957611d89611d5c565b634e487b7160e01b600052603260045260246000fd5b600060018201611e2457611e24611d5c565b5060010190565b6001600160801b03818116838216019080821115611e4b57611e4b611d5c565b5092915050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611e9d57600080fd5b81518015158114611b8757600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611efd5784516001600160a01b031683529383019391830191600101611ed8565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020808385031215611f3157600080fd5b82516001600160401b0380821115611f4857600080fd5b818501915085601f830112611f5c57600080fd5b815181811115611f6e57611f6e611e75565b8060051b604051601f19603f83011681018181108582111715611f9357611f93611e75565b604052918252848201925083810185019188831115611fb157600080fd5b938501935b82851015611fcf57845184529385019392850192611fb6565b98975050505050505050565b63ffffffff828116828216039080821115611e4b57611e4b611d5c565b6020808252601590820152743bb937b733903ab833b930b232903b32b939b4b7b760591b604082015260600190565b600063ffffffff80831681810361204057612040611d5c565b6001019392505050565b60008261205957612059611dac565b500490565b63ffffffff818116838216019080821115611e4b57611e4b611d5c565b60006001600160401b038281166002600160401b0319810161204057612040611d5c56fea2646970667358221220e7353ea7e0406e35f710e0a5cbc700032a901ee844b91194a60c9ecda4f27cd064736f6c63430008130033",
572
+ "bytecode": "0x608060405234801561001057600080fd5b506121db806100206000396000f3fe60806040526004361061018d5760003560e01c806315126799146101995780631ece9b12146101c15780632f5a3d15146101ee57806336afc6fa146102045780633771dcf8146102195780633e6326fc1461023b57806354fd4d501461025b5780635b61e2c1146102945780635bc758e2146102d35780635c9302c9146102e95780636bdd7242146102ff57806370c635911461031f57806378e979251461033f5780637befab10146103555780637f49f709146103795780638406c0791461039957806389b08f11146103c05780638da5cb5b1461042957806393a08de414610449578063a4c0ed3614610466578063aa31e45914610496578063aaab4c1d146104c6578063ad285cad146104f9578063c25673d514610526578063c573cb401461053b578063c5da10331461055b578063c8eb754914610593578063cce987d4146105b3578063d1c8e125146105d7578063e97eefd2146105f7578063f000999e14610617578063f83ecf9914610637578063f84b40f514610657578063fe173b971461066d57600080fd5b3661019457005b600080fd5b3480156101a557600080fd5b506101ae610694565b6040519081526020015b60405180910390f35b3480156101cd57600080fd5b50600b546101e1906001600160a01b031681565b6040516101b89190611c44565b3480156101fa57600080fd5b506101ae60025481565b34801561021057600080fd5b506101e16106bd565b34801561022557600080fd5b50610239610234366004611c70565b610743565b005b34801561024757600080fd5b506006546101e1906001600160a01b031681565b34801561026757600080fd5b50600d5461027f90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101b8565b3480156102a057600080fd5b50600b546102bb90600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016101b8565b3480156102df57600080fd5b506101ae60035481565b3480156102f557600080fd5b506101ae60055481565b34801561030b57600080fd5b5061023961031a366004611cb0565b610d23565b34801561032b57600080fd5b5061023961033a366004611ccb565b610d79565b34801561034b57600080fd5b506101ae60045481565b34801561036157600080fd5b50600a5461027f90600160601b900463ffffffff1681565b34801561038557600080fd5b50610239610394366004611c70565b610db9565b3480156103a557600080fd5b50600c546101e190600160401b90046001600160a01b031681565b3480156103cc57600080fd5b506104056103db366004611c70565b6009602052600090815260409020546001600160801b03811690600160801b900463ffffffff1682565b604080516001600160801b03909316835263ffffffff9091166020830152016101b8565b34801561043557600080fd5b50600d546101e1906001600160a01b031681565b34801561045557600080fd5b50600a5461027f9063ffffffff1681565b34801561047257600080fd5b50610486610481366004611ce4565b610e0c565b60405190151581526020016101b8565b3480156104a257600080fd5b506104866104b1366004611c70565b60086020526000908152604090205460ff1681565b3480156104d257600080fd5b50600d546104e790600160c01b900460ff1681565b60405160ff90911681526020016101b8565b34801561050557600080fd5b506101ae610514366004611c70565b600e6020526000908152604090205481565b34801561053257600080fd5b50610239611043565b34801561054757600080fd5b50600c546102bb906001600160401b031681565b34801561056757600080fd5b506101ae610576366004611d6c565b600760209081526000928352604080842090915290825290205481565b34801561059f57600080fd5b506102396105ae366004611d9c565b6110f8565b3480156105bf57600080fd5b50600a5461027f90600160801b900463ffffffff1681565b3480156105e357600080fd5b506102396105f2366004611dbf565b611142565b34801561060357600080fd5b50610486610612366004611c70565b611326565b34801561062357600080fd5b50610239610632366004611e17565b6116ed565b34801561064357600080fd5b50610239610652366004611c70565b6117eb565b34801561066357600080fd5b506101ae60015481565b34801561067957600080fd5b50600a546102bb90600160201b90046001600160401b031681565b600a546002546000916106b891600160201b9091046001600160401b031690611e78565b905090565b60065460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b89190611e95565b60005a90508160006107536106bd565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b815260040161077e9190611c44565b602060405180830381865afa15801561079b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bf9190611e95565b90506001600160a01b038116156107d657806107d8565b815b6005549092506107e661188e565b806005541461080057600c80546001600160401b03191690555b6005546001600160a01b0384166000908152600960205260409020546001600160801b0390811691161415806108625750600a546001600160a01b03841660009081526009602052604090205463ffffffff918216600160801b909104909116105b6108a85760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526008602052604090205460ff161580156108e85750600b54600c546001600160401b03600160a01b90920482169116105b806108fb57506001600160a01b03821615155b6109565760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b606482015260840161089f565b600060076005546109679190611ec8565b6001600160a01b038516600090815260096020526040812054600554929350909161099b916001600160801b031690611edc565b9050600781116109ab57806109ae565b60075b90508181116109bd57806109c8565b6109c8826001611eef565b90506000816109d8846001611eef565b6109e29190611edc565b90505b828111610a5a576001600160a01b03861660009081526009602052604081206001018260078110610a1857610a18611f02565b600291828204019190066010026101000a8154816001600160801b0302191690836001600160801b031602179055508080610a5290611f18565b9150506109e5565b506000805b838111610ad0576001600160a01b03871660009081526009602052604090206001018160078110610a9257610a92611f02565b600291828204019190066010029054906101000a90046001600160801b031682610abc9190611f31565b915080610ac881611f18565b915050610a5f565b50600a54600154600160601b820463ffffffff1691610b0091600160201b9091046001600160401b031690611e78565b610b0a9190611e78565b816001600160801b031610610b7e5760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b606482015260840161089f565b876000610b896106bd565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610bb49190611c44565b602060405180830381865afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf59190611e95565b6001600160a01b0316141580610c1c5750600c54600160401b90046001600160a01b031633145b610c595760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161089f565b6001600160a01b0381166000908152600e60205260409020544211610ca95760405162461bcd60e51b815260206004820152600660248201526518985b9b995960d21b604482015260640161089f565b610cb2896118af565b505050505050505a610cc49082611edc565b610cd09061a410611eef565b600a5490915033906108fc90610cf690600160201b90046001600160401b031684611e78565b6040518115909202916000818181858888f19350505050158015610d1e573d6000803e3d6000fd5b505050565b600d546001600160a01b03163314610d4d5760405162461bcd60e51b815260040161089f90611f58565b600a80546001600160401b03909216600160201b02600160201b600160601b0319909216919091179055565b600d546001600160a01b03163314610da35760405162461bcd60e51b815260040161089f90611f58565b6002818155610db3908290611e78565b60015550565b600d546001600160a01b03163314610de35760405162461bcd60e51b815260040161089f90611f58565b610df0426203f480611eef565b6001600160a01b039091166000908152600e6020526040902055565b600a54600090600160801b900463ffffffff16841115610e595760405162461bcd60e51b8152602060048201526008602482015267736c69707061676560c01b604482015260640161089f565b6000610e6783850185611c70565b60408051600280825260608201835292935083926000926020830190803683370190505090503381600081518110610ea157610ea1611f02565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f239190611e95565b81600181518110610f3657610f36611f02565b6001600160a01b03928316602091820292909201015260405163095ea7b360e01b815290841660048201526000196024820152339063095ea7b3906044016020604051808303816000875af1158015610f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb79190611f91565b506040516318cbafe560e01b81526001600160a01b038316906318cbafe590610fed908a9060009086908e904290600401611fb3565b6000604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110349190810190612024565b50600198975050505050505050565b60036110506001826120e1565b600d54600160a01b900463ffffffff9081169116146110815760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff1690601461109e8361212d565b91906101000a81548163ffffffff021916908363ffffffff16021790555050600a60049054906101000a90046001600160401b03166001600160401b03166002546110e99190612150565b6002818155610db39190611e78565b600d546001600160a01b031633146111225760405162461bcd60e51b815260040161089f90611f58565b600d805460ff909216600160c01b0260ff60c01b19909216919091179055565b600054610100900460ff16158080156111625750600054600160ff909116105b8061117c5750303b15801561117c575060005460ff166001145b6111df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089f565b6000805460ff191660011790558015611202576000805461ff0019166101001790555b600c8054600160401b600160e01b031916600160401b6001600160a01b03861602179055600a8054600160201b600160601b031916600160201b6001600160401b038781169190910291909117909155821660028181556112639190611e78565b600155600a805442600455600680546001600160a01b0319166001600160a01b03891617905563ffffffff600160601b03600160a01b03191660036501f40000000160611b01179055600b8054600160a01b600160e01b03191661027160a31b179055600d805460ff60c01b1916600f60c01b179055801561131f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000816001600160a01b03163161133b610694565b101561134957506000919050565b6000826001600160a01b03163161135e610694565b6113689190611edc565b600d54909150600160c01b900460ff16611380610694565b61138b836064611e78565b6113959190612150565b10156113a45750600092915050565b60006113ae6106bd565b6001600160a01b0316632d0e9b46856040518263ffffffff1660e01b81526004016113d99190611c44565b602060405180830381865afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190611e95565b90506001600160a01b038116156114315780611433565b835b9350600062015180600454426114499190611edc565b6114539190612150565b6001600160a01b038616600090815260096020526040812054919250906001600160801b0380841691161415806114b057506001600160a01b0386166000908152600960205260409020546003600160801b90910463ffffffff16105b801561150a57506001600160a01b03861660009081526008602052604090205460ff161580156114f75750600b54600c546001600160401b03600160a01b90920482169116105b8061150a57506001600160a01b03831615155b6001600160a01b038716600090815260096020526040808220815160e0810192839052939450919291600101906007908285855b82829054906101000a90046001600160801b03166001600160801b031681526020019060100190602082600f0104928301926001038202915080841161153e5790505050505050905060006007846115969190611ec8565b6001600160a01b038916600090815260096020526040812054919250906115c6906001600160801b031686611edc565b9050600781116115d657806115d9565b60075b90508181116115e857806115f3565b6115f3826001611eef565b9050600081611603846001611eef565b61160d9190611edc565b90505b82811161165057600084826007811061162b5761162b611f02565b6001600160801b0390921660209290920201528061164881611f18565b915050611610565b506000805b8381116116915784816007811061166e5761166e611f02565b602002015161167d9083611f31565b91508061168981611f18565b915050611655565b508480156116df5750600a54600154600160601b820463ffffffff16916116c991600160201b9091046001600160401b031690611e78565b6116d39190611e78565b816001600160801b0316105b9a9950505050505050505050565b60016116f981806120e1565b600d54600160a01b900463ffffffff90811691161461172a5760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff169060146117478361212d565b82546101009290920a63ffffffff81810219909316919092169190910217905550600d80546001600160a01b0319166001600160a01b038516179055600b54600160a01b90046001600160401b03166000036117b857600b8054600160a01b600160e01b03191661027160a31b1790555b600c8054600160401b600160e01b031916600160401b6001600160a01b038716021790556117e5826117eb565b50505050565b60026117f86001826120e1565b600d54600160a01b900463ffffffff9081169116146118295760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff169060146118468361212d565b82546101009290920a63ffffffff81810219909316919092169190910217905550600680546001600160a01b0319166001600160a01b03841617905561188a611043565b5050565b62015180600454426118a09190611edc565b6118aa9190612150565b600555565b8060006118ba6106bd565b6001600160a01b0316632d0e9b46846040518263ffffffff1660e01b81526004016118e59190611c44565b602060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119269190611e95565b90506001600160a01b0381161561193d578061193f565b825b92506000836001600160a01b031631611956610694565b6119609190611edc565b600d54909150600160c01b900460ff16611978610694565b611983836064611e78565b61198d9190612150565b10156119c75760405162461bcd60e51b815260206004820152600960248201526806c6f7720746f546f760bc1b604482015260640161089f565b600060076005546119d89190611ec8565b6005546001600160a01b0387166000908152600960205260409020549192506001600160801b03908116911603611a65576001600160a01b0385166000908152600960205260409020805460019190601090611a42908490600160801b900463ffffffff16612164565b92506101000a81548163ffffffff021916908363ffffffff160217905550611a92565b6001600160a01b0385166000908152600960205260409020805463ffffffff60801b1916600160801b1790555b6005546001600160a01b038616600090815260096020526040902080546001600160801b0319166001600160801b0390921691909117815582906001018260078110611ae057611ae0611f02565b600291828204019190066010028282829054906101000a90046001600160801b0316611b0c9190611f31565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b03851660009081526008602052604090205460ff16158015611b5f57506001600160a01b038316155b15611ba357600c80546001600160401b0316906000611b7d83612181565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6001600160a01b03808616600090815260086020526040808220805460ff19166001179055519186169184156108fc0291859190818181858888f19350505050158015611bf4573d6000803e3d6000fd5b50604080518381526001600160a01b0385811660208301523392908716917f7872034fbcc87890e73d66eac55389e0ffdba157b89a73bd2011157ebac1d66e910160405180910390a35050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611c6d57600080fd5b50565b600060208284031215611c8257600080fd5b8135611c8d81611c58565b9392505050565b80356001600160401b0381168114611cab57600080fd5b919050565b600060208284031215611cc257600080fd5b611c8d82611c94565b600060208284031215611cdd57600080fd5b5035919050565b60008060008060608587031215611cfa57600080fd5b8435611d0581611c58565b93506020850135925060408501356001600160401b0380821115611d2857600080fd5b818701915087601f830112611d3c57600080fd5b813581811115611d4b57600080fd5b886020828501011115611d5d57600080fd5b95989497505060200194505050565b60008060408385031215611d7f57600080fd5b823591506020830135611d9181611c58565b809150509250929050565b600060208284031215611dae57600080fd5b813560ff81168114611c8d57600080fd5b60008060008060808587031215611dd557600080fd5b8435611de081611c58565b9350611dee60208601611c94565b92506040850135611dfe81611c58565b9150611e0c60608601611c94565b905092959194509250565b600080600060608486031215611e2c57600080fd5b8335611e3781611c58565b92506020840135611e4781611c58565b91506040840135611e5781611c58565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611e8f57611e8f611e62565b92915050565b600060208284031215611ea757600080fd5b8151611c8d81611c58565b634e487b7160e01b600052601260045260246000fd5b600082611ed757611ed7611eb2565b500690565b81810381811115611e8f57611e8f611e62565b80820180821115611e8f57611e8f611e62565b634e487b7160e01b600052603260045260246000fd5b600060018201611f2a57611f2a611e62565b5060010190565b6001600160801b03818116838216019080821115611f5157611f51611e62565b5092915050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611fa357600080fd5b81518015158114611c8d57600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120035784516001600160a01b031683529383019391830191600101611fde565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561203757600080fd5b82516001600160401b038082111561204e57600080fd5b818501915085601f83011261206257600080fd5b81518181111561207457612074611f7b565b8060051b604051601f19603f8301168101818110858211171561209957612099611f7b565b6040529182528482019250838101850191888311156120b757600080fd5b938501935b828510156120d5578451845293850193928501926120bc565b98975050505050505050565b63ffffffff828116828216039080821115611f5157611f51611e62565b6020808252601590820152743bb937b733903ab833b930b232903b32b939b4b7b760591b604082015260600190565b600063ffffffff80831681810361214657612146611e62565b6001019392505050565b60008261215f5761215f611eb2565b500490565b63ffffffff818116838216019080821115611f5157611f51611e62565b60006001600160401b038281166002600160401b0319810161214657612146611e6256fea2646970667358221220ac2bad2fb462df9850451a920ca418093b3e066945ffdae6cf77b707e939d4b464736f6c63430008130033",
573
+ "deployedBytecode": "0x60806040526004361061018d5760003560e01c806315126799146101995780631ece9b12146101c15780632f5a3d15146101ee57806336afc6fa146102045780633771dcf8146102195780633e6326fc1461023b57806354fd4d501461025b5780635b61e2c1146102945780635bc758e2146102d35780635c9302c9146102e95780636bdd7242146102ff57806370c635911461031f57806378e979251461033f5780637befab10146103555780637f49f709146103795780638406c0791461039957806389b08f11146103c05780638da5cb5b1461042957806393a08de414610449578063a4c0ed3614610466578063aa31e45914610496578063aaab4c1d146104c6578063ad285cad146104f9578063c25673d514610526578063c573cb401461053b578063c5da10331461055b578063c8eb754914610593578063cce987d4146105b3578063d1c8e125146105d7578063e97eefd2146105f7578063f000999e14610617578063f83ecf9914610637578063f84b40f514610657578063fe173b971461066d57600080fd5b3661019457005b600080fd5b3480156101a557600080fd5b506101ae610694565b6040519081526020015b60405180910390f35b3480156101cd57600080fd5b50600b546101e1906001600160a01b031681565b6040516101b89190611c44565b3480156101fa57600080fd5b506101ae60025481565b34801561021057600080fd5b506101e16106bd565b34801561022557600080fd5b50610239610234366004611c70565b610743565b005b34801561024757600080fd5b506006546101e1906001600160a01b031681565b34801561026757600080fd5b50600d5461027f90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101b8565b3480156102a057600080fd5b50600b546102bb90600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016101b8565b3480156102df57600080fd5b506101ae60035481565b3480156102f557600080fd5b506101ae60055481565b34801561030b57600080fd5b5061023961031a366004611cb0565b610d23565b34801561032b57600080fd5b5061023961033a366004611ccb565b610d79565b34801561034b57600080fd5b506101ae60045481565b34801561036157600080fd5b50600a5461027f90600160601b900463ffffffff1681565b34801561038557600080fd5b50610239610394366004611c70565b610db9565b3480156103a557600080fd5b50600c546101e190600160401b90046001600160a01b031681565b3480156103cc57600080fd5b506104056103db366004611c70565b6009602052600090815260409020546001600160801b03811690600160801b900463ffffffff1682565b604080516001600160801b03909316835263ffffffff9091166020830152016101b8565b34801561043557600080fd5b50600d546101e1906001600160a01b031681565b34801561045557600080fd5b50600a5461027f9063ffffffff1681565b34801561047257600080fd5b50610486610481366004611ce4565b610e0c565b60405190151581526020016101b8565b3480156104a257600080fd5b506104866104b1366004611c70565b60086020526000908152604090205460ff1681565b3480156104d257600080fd5b50600d546104e790600160c01b900460ff1681565b60405160ff90911681526020016101b8565b34801561050557600080fd5b506101ae610514366004611c70565b600e6020526000908152604090205481565b34801561053257600080fd5b50610239611043565b34801561054757600080fd5b50600c546102bb906001600160401b031681565b34801561056757600080fd5b506101ae610576366004611d6c565b600760209081526000928352604080842090915290825290205481565b34801561059f57600080fd5b506102396105ae366004611d9c565b6110f8565b3480156105bf57600080fd5b50600a5461027f90600160801b900463ffffffff1681565b3480156105e357600080fd5b506102396105f2366004611dbf565b611142565b34801561060357600080fd5b50610486610612366004611c70565b611326565b34801561062357600080fd5b50610239610632366004611e17565b6116ed565b34801561064357600080fd5b50610239610652366004611c70565b6117eb565b34801561066357600080fd5b506101ae60015481565b34801561067957600080fd5b50600a546102bb90600160201b90046001600160401b031681565b600a546002546000916106b891600160201b9091046001600160401b031690611e78565b905090565b60065460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b89190611e95565b60005a90508160006107536106bd565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b815260040161077e9190611c44565b602060405180830381865afa15801561079b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bf9190611e95565b90506001600160a01b038116156107d657806107d8565b815b6005549092506107e661188e565b806005541461080057600c80546001600160401b03191690555b6005546001600160a01b0384166000908152600960205260409020546001600160801b0390811691161415806108625750600a546001600160a01b03841660009081526009602052604090205463ffffffff918216600160801b909104909116105b6108a85760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526008602052604090205460ff161580156108e85750600b54600c546001600160401b03600160a01b90920482169116105b806108fb57506001600160a01b03821615155b6109565760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b606482015260840161089f565b600060076005546109679190611ec8565b6001600160a01b038516600090815260096020526040812054600554929350909161099b916001600160801b031690611edc565b9050600781116109ab57806109ae565b60075b90508181116109bd57806109c8565b6109c8826001611eef565b90506000816109d8846001611eef565b6109e29190611edc565b90505b828111610a5a576001600160a01b03861660009081526009602052604081206001018260078110610a1857610a18611f02565b600291828204019190066010026101000a8154816001600160801b0302191690836001600160801b031602179055508080610a5290611f18565b9150506109e5565b506000805b838111610ad0576001600160a01b03871660009081526009602052604090206001018160078110610a9257610a92611f02565b600291828204019190066010029054906101000a90046001600160801b031682610abc9190611f31565b915080610ac881611f18565b915050610a5f565b50600a54600154600160601b820463ffffffff1691610b0091600160201b9091046001600160401b031690611e78565b610b0a9190611e78565b816001600160801b031610610b7e5760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b606482015260840161089f565b876000610b896106bd565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610bb49190611c44565b602060405180830381865afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf59190611e95565b6001600160a01b0316141580610c1c5750600c54600160401b90046001600160a01b031633145b610c595760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161089f565b6001600160a01b0381166000908152600e60205260409020544211610ca95760405162461bcd60e51b815260206004820152600660248201526518985b9b995960d21b604482015260640161089f565b610cb2896118af565b505050505050505a610cc49082611edc565b610cd09061a410611eef565b600a5490915033906108fc90610cf690600160201b90046001600160401b031684611e78565b6040518115909202916000818181858888f19350505050158015610d1e573d6000803e3d6000fd5b505050565b600d546001600160a01b03163314610d4d5760405162461bcd60e51b815260040161089f90611f58565b600a80546001600160401b03909216600160201b02600160201b600160601b0319909216919091179055565b600d546001600160a01b03163314610da35760405162461bcd60e51b815260040161089f90611f58565b6002818155610db3908290611e78565b60015550565b600d546001600160a01b03163314610de35760405162461bcd60e51b815260040161089f90611f58565b610df0426203f480611eef565b6001600160a01b039091166000908152600e6020526040902055565b600a54600090600160801b900463ffffffff16841115610e595760405162461bcd60e51b8152602060048201526008602482015267736c69707061676560c01b604482015260640161089f565b6000610e6783850185611c70565b60408051600280825260608201835292935083926000926020830190803683370190505090503381600081518110610ea157610ea1611f02565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f239190611e95565b81600181518110610f3657610f36611f02565b6001600160a01b03928316602091820292909201015260405163095ea7b360e01b815290841660048201526000196024820152339063095ea7b3906044016020604051808303816000875af1158015610f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb79190611f91565b506040516318cbafe560e01b81526001600160a01b038316906318cbafe590610fed908a9060009086908e904290600401611fb3565b6000604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110349190810190612024565b50600198975050505050505050565b60036110506001826120e1565b600d54600160a01b900463ffffffff9081169116146110815760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff1690601461109e8361212d565b91906101000a81548163ffffffff021916908363ffffffff16021790555050600a60049054906101000a90046001600160401b03166001600160401b03166002546110e99190612150565b6002818155610db39190611e78565b600d546001600160a01b031633146111225760405162461bcd60e51b815260040161089f90611f58565b600d805460ff909216600160c01b0260ff60c01b19909216919091179055565b600054610100900460ff16158080156111625750600054600160ff909116105b8061117c5750303b15801561117c575060005460ff166001145b6111df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089f565b6000805460ff191660011790558015611202576000805461ff0019166101001790555b600c8054600160401b600160e01b031916600160401b6001600160a01b03861602179055600a8054600160201b600160601b031916600160201b6001600160401b038781169190910291909117909155821660028181556112639190611e78565b600155600a805442600455600680546001600160a01b0319166001600160a01b03891617905563ffffffff600160601b03600160a01b03191660036501f40000000160611b01179055600b8054600160a01b600160e01b03191661027160a31b179055600d805460ff60c01b1916600f60c01b179055801561131f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000816001600160a01b03163161133b610694565b101561134957506000919050565b6000826001600160a01b03163161135e610694565b6113689190611edc565b600d54909150600160c01b900460ff16611380610694565b61138b836064611e78565b6113959190612150565b10156113a45750600092915050565b60006113ae6106bd565b6001600160a01b0316632d0e9b46856040518263ffffffff1660e01b81526004016113d99190611c44565b602060405180830381865afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190611e95565b90506001600160a01b038116156114315780611433565b835b9350600062015180600454426114499190611edc565b6114539190612150565b6001600160a01b038616600090815260096020526040812054919250906001600160801b0380841691161415806114b057506001600160a01b0386166000908152600960205260409020546003600160801b90910463ffffffff16105b801561150a57506001600160a01b03861660009081526008602052604090205460ff161580156114f75750600b54600c546001600160401b03600160a01b90920482169116105b8061150a57506001600160a01b03831615155b6001600160a01b038716600090815260096020526040808220815160e0810192839052939450919291600101906007908285855b82829054906101000a90046001600160801b03166001600160801b031681526020019060100190602082600f0104928301926001038202915080841161153e5790505050505050905060006007846115969190611ec8565b6001600160a01b038916600090815260096020526040812054919250906115c6906001600160801b031686611edc565b9050600781116115d657806115d9565b60075b90508181116115e857806115f3565b6115f3826001611eef565b9050600081611603846001611eef565b61160d9190611edc565b90505b82811161165057600084826007811061162b5761162b611f02565b6001600160801b0390921660209290920201528061164881611f18565b915050611610565b506000805b8381116116915784816007811061166e5761166e611f02565b602002015161167d9083611f31565b91508061168981611f18565b915050611655565b508480156116df5750600a54600154600160601b820463ffffffff16916116c991600160201b9091046001600160401b031690611e78565b6116d39190611e78565b816001600160801b0316105b9a9950505050505050505050565b60016116f981806120e1565b600d54600160a01b900463ffffffff90811691161461172a5760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff169060146117478361212d565b82546101009290920a63ffffffff81810219909316919092169190910217905550600d80546001600160a01b0319166001600160a01b038516179055600b54600160a01b90046001600160401b03166000036117b857600b8054600160a01b600160e01b03191661027160a31b1790555b600c8054600160401b600160e01b031916600160401b6001600160a01b038716021790556117e5826117eb565b50505050565b60026117f86001826120e1565b600d54600160a01b900463ffffffff9081169116146118295760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff169060146118468361212d565b82546101009290920a63ffffffff81810219909316919092169190910217905550600680546001600160a01b0319166001600160a01b03841617905561188a611043565b5050565b62015180600454426118a09190611edc565b6118aa9190612150565b600555565b8060006118ba6106bd565b6001600160a01b0316632d0e9b46846040518263ffffffff1660e01b81526004016118e59190611c44565b602060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119269190611e95565b90506001600160a01b0381161561193d578061193f565b825b92506000836001600160a01b031631611956610694565b6119609190611edc565b600d54909150600160c01b900460ff16611978610694565b611983836064611e78565b61198d9190612150565b10156119c75760405162461bcd60e51b815260206004820152600960248201526806c6f7720746f546f760bc1b604482015260640161089f565b600060076005546119d89190611ec8565b6005546001600160a01b0387166000908152600960205260409020549192506001600160801b03908116911603611a65576001600160a01b0385166000908152600960205260409020805460019190601090611a42908490600160801b900463ffffffff16612164565b92506101000a81548163ffffffff021916908363ffffffff160217905550611a92565b6001600160a01b0385166000908152600960205260409020805463ffffffff60801b1916600160801b1790555b6005546001600160a01b038616600090815260096020526040902080546001600160801b0319166001600160801b0390921691909117815582906001018260078110611ae057611ae0611f02565b600291828204019190066010028282829054906101000a90046001600160801b0316611b0c9190611f31565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b03851660009081526008602052604090205460ff16158015611b5f57506001600160a01b038316155b15611ba357600c80546001600160401b0316906000611b7d83612181565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6001600160a01b03808616600090815260086020526040808220805460ff19166001179055519186169184156108fc0291859190818181858888f19350505050158015611bf4573d6000803e3d6000fd5b50604080518381526001600160a01b0385811660208301523392908716917f7872034fbcc87890e73d66eac55389e0ffdba157b89a73bd2011157ebac1d66e910160405180910390a35050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611c6d57600080fd5b50565b600060208284031215611c8257600080fd5b8135611c8d81611c58565b9392505050565b80356001600160401b0381168114611cab57600080fd5b919050565b600060208284031215611cc257600080fd5b611c8d82611c94565b600060208284031215611cdd57600080fd5b5035919050565b60008060008060608587031215611cfa57600080fd5b8435611d0581611c58565b93506020850135925060408501356001600160401b0380821115611d2857600080fd5b818701915087601f830112611d3c57600080fd5b813581811115611d4b57600080fd5b886020828501011115611d5d57600080fd5b95989497505060200194505050565b60008060408385031215611d7f57600080fd5b823591506020830135611d9181611c58565b809150509250929050565b600060208284031215611dae57600080fd5b813560ff81168114611c8d57600080fd5b60008060008060808587031215611dd557600080fd5b8435611de081611c58565b9350611dee60208601611c94565b92506040850135611dfe81611c58565b9150611e0c60608601611c94565b905092959194509250565b600080600060608486031215611e2c57600080fd5b8335611e3781611c58565b92506020840135611e4781611c58565b91506040840135611e5781611c58565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611e8f57611e8f611e62565b92915050565b600060208284031215611ea757600080fd5b8151611c8d81611c58565b634e487b7160e01b600052601260045260246000fd5b600082611ed757611ed7611eb2565b500690565b81810381811115611e8f57611e8f611e62565b80820180821115611e8f57611e8f611e62565b634e487b7160e01b600052603260045260246000fd5b600060018201611f2a57611f2a611e62565b5060010190565b6001600160801b03818116838216019080821115611f5157611f51611e62565b5092915050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611fa357600080fd5b81518015158114611c8d57600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120035784516001600160a01b031683529383019391830191600101611fde565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561203757600080fd5b82516001600160401b038082111561204e57600080fd5b818501915085601f83011261206257600080fd5b81518181111561207457612074611f7b565b8060051b604051601f19603f8301168101818110858211171561209957612099611f7b565b6040529182528482019250838101850191888311156120b757600080fd5b938501935b828510156120d5578451845293850193928501926120bc565b98975050505050505050565b63ffffffff828116828216039080821115611f5157611f51611e62565b6020808252601590820152743bb937b733903ab833b930b232903b32b939b4b7b760591b604082015260600190565b600063ffffffff80831681810361214657612146611e62565b6001019392505050565b60008261215f5761215f611eb2565b500490565b63ffffffff818116838216019080821115611f5157611f51611e62565b60006001600160401b038281166002600160401b0319810161214657612146611e6256fea2646970667358221220ac2bad2fb462df9850451a920ca418093b3e066945ffdae6cf77b707e939d4b464736f6c63430008130033",
542
574
  "linkReferences": {},
543
575
  "deployedLinkReferences": {}
544
576
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aeb7c6326d560be4370e5a7e0402b261.json"
3
+ "buildInfo": "../../../build-info/c2738e3ee29ad79e6888919e48f00449.json"
4
4
  }
@@ -75,8 +75,8 @@
75
75
  "type": "receive"
76
76
  }
77
77
  ],
78
- "bytecode": "0x608060405234801561001057600080fd5b506105a6806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200e6166433af0aedd2d00610e79bdf008f29d6e0f5d0ecbcb775fac40004d953e64736f6c63430008130033",
79
- "deployedBytecode": "0x6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200e6166433af0aedd2d00610e79bdf008f29d6e0f5d0ecbcb775fac40004d953e64736f6c63430008130033",
78
+ "bytecode": "0x608060405234801561001057600080fd5b506105a6806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a6a0379f729b3d5f342e415d650b0de57ffd3cbf98bb1933f3a9e1c7bb15271864736f6c63430008130033",
79
+ "deployedBytecode": "0x6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a6a0379f729b3d5f342e415d650b0de57ffd3cbf98bb1933f3a9e1c7bb15271864736f6c63430008130033",
80
80
  "linkReferences": {},
81
81
  "deployedLinkReferences": {}
82
82
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/aeb7c6326d560be4370e5a7e0402b261.json"
3
+ "buildInfo": "../../../build-info/c2738e3ee29ad79e6888919e48f00449.json"
4
4
  }
@@ -165,8 +165,8 @@
165
165
  "type": "function"
166
166
  }
167
167
  ],
168
- "bytecode": "0x608060405234801561001057600080fd5b5060405161002060208201610044565b601f1982820381018352601f90910116604052805160209190910120600055610051565b6105c680610d8383390190565b610d23806100606000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630bf61a011461005c5780631b903b841461008557806340ad200d1461009857806381ae1f5b146100ab578063b3eeb5e2146100be575b600080fd5b61006f61006a366004610512565b6100d1565b60405161007c9190610568565b60405180910390f35b61006f61009336600461057c565b6100e7565b61006f6100a63660046105f7565b61016c565b61006f6100b936600461062c565b6101df565b61006f6100cc366004610658565b6101f5565b60006100df848484336102f2565b949350505050565b60008061012b853386868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103cd92505050565b90507fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca3128160405161015c9190610568565b60405180910390a1949350505050565b60008061017985856103fe565b6040516001600160f81b031960208201526001600160601b03193060601b166021820152603581018290526055810185905290915060009060750160408051808303601f1901815291905280516020909101206001600160a01b03169695505050505050565b60006101ee838360005461016c565b9392505050565b6000808360601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09250507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349826040516102709190610568565b60405180910390a18251156102eb576000826001600160a01b03168460405161029991906106c9565b6000604051808303816000865af19150503d80600081146102d6576040519150601f19603f3d011682016040523d82523d6000602084013e6102db565b606091505b50509050806102e957600080fd5b505b5092915050565b6000806040518060200161030590610447565b601f1982820381018352601f90910116604052905060006103278785846103cd565b60405163347d5e2560e21b815290915081906001600160a01b0382169063d1f578949061035a908a908a906004016106e5565b600060405180830381600087803b15801561037457600080fd5b505af1158015610388573d6000803e3d6000fd5b505050507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349816040516103ba9190610568565b60405180910390a1979650505050505050565b60008060006103dc86866103fe565b9050808451602086016000f59150813b6103f557600080fd5b50949350505050565b6000828260405160200161042992919091825260601b6001600160601b031916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b6105c68061072883390190565b80356001600160a01b038116811461046b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261049757600080fd5b81356001600160401b03808211156104b1576104b1610470565b604051601f8301601f19908116603f011681019082821181831017156104d9576104d9610470565b816040528381528660208588010111156104f257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561052757600080fd5b8335925061053760208501610454565b915060408401356001600160401b0381111561055257600080fd5b61055e86828701610486565b9150509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561059157600080fd5b8335925060208401356001600160401b03808211156105af57600080fd5b818601915086601f8301126105c357600080fd5b8135818111156105d257600080fd5b8760208285010111156105e457600080fd5b6020830194508093505050509250925092565b60008060006060848603121561060c57600080fd5b8335925061061c60208501610454565b9150604084013590509250925092565b6000806040838503121561063f57600080fd5b8235915061064f60208401610454565b90509250929050565b6000806040838503121561066b57600080fd5b61067483610454565b915060208301356001600160401b0381111561068f57600080fd5b61069b85828601610486565b9150509250929050565b60005b838110156106c05781810151838201526020016106a8565b50506000910152565b600082516106db8184602087016106a5565b9190910192915050565b60018060a01b038316815260406020820152600082518060408401526107128160608501602087016106a5565b601f01601f191691909101606001939250505056fe608060405234801561001057600080fd5b506105a6806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200e6166433af0aedd2d00610e79bdf008f29d6e0f5d0ecbcb775fac40004d953e64736f6c63430008130033a2646970667358221220692640a4c39c212fc492192c3f1a222f3611bc814d0e23bff4d232f5f02e366f64736f6c63430008130033608060405234801561001057600080fd5b506105a6806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200e6166433af0aedd2d00610e79bdf008f29d6e0f5d0ecbcb775fac40004d953e64736f6c63430008130033",
169
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80630bf61a011461005c5780631b903b841461008557806340ad200d1461009857806381ae1f5b146100ab578063b3eeb5e2146100be575b600080fd5b61006f61006a366004610512565b6100d1565b60405161007c9190610568565b60405180910390f35b61006f61009336600461057c565b6100e7565b61006f6100a63660046105f7565b61016c565b61006f6100b936600461062c565b6101df565b61006f6100cc366004610658565b6101f5565b60006100df848484336102f2565b949350505050565b60008061012b853386868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103cd92505050565b90507fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca3128160405161015c9190610568565b60405180910390a1949350505050565b60008061017985856103fe565b6040516001600160f81b031960208201526001600160601b03193060601b166021820152603581018290526055810185905290915060009060750160408051808303601f1901815291905280516020909101206001600160a01b03169695505050505050565b60006101ee838360005461016c565b9392505050565b6000808360601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09250507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349826040516102709190610568565b60405180910390a18251156102eb576000826001600160a01b03168460405161029991906106c9565b6000604051808303816000865af19150503d80600081146102d6576040519150601f19603f3d011682016040523d82523d6000602084013e6102db565b606091505b50509050806102e957600080fd5b505b5092915050565b6000806040518060200161030590610447565b601f1982820381018352601f90910116604052905060006103278785846103cd565b60405163347d5e2560e21b815290915081906001600160a01b0382169063d1f578949061035a908a908a906004016106e5565b600060405180830381600087803b15801561037457600080fd5b505af1158015610388573d6000803e3d6000fd5b505050507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349816040516103ba9190610568565b60405180910390a1979650505050505050565b60008060006103dc86866103fe565b9050808451602086016000f59150813b6103f557600080fd5b50949350505050565b6000828260405160200161042992919091825260601b6001600160601b031916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b6105c68061072883390190565b80356001600160a01b038116811461046b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261049757600080fd5b81356001600160401b03808211156104b1576104b1610470565b604051601f8301601f19908116603f011681019082821181831017156104d9576104d9610470565b816040528381528660208588010111156104f257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561052757600080fd5b8335925061053760208501610454565b915060408401356001600160401b0381111561055257600080fd5b61055e86828701610486565b9150509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561059157600080fd5b8335925060208401356001600160401b03808211156105af57600080fd5b818601915086601f8301126105c357600080fd5b8135818111156105d257600080fd5b8760208285010111156105e457600080fd5b6020830194508093505050509250925092565b60008060006060848603121561060c57600080fd5b8335925061061c60208501610454565b9150604084013590509250925092565b6000806040838503121561063f57600080fd5b8235915061064f60208401610454565b90509250929050565b6000806040838503121561066b57600080fd5b61067483610454565b915060208301356001600160401b0381111561068f57600080fd5b61069b85828601610486565b9150509250929050565b60005b838110156106c05781810151838201526020016106a8565b50506000910152565b600082516106db8184602087016106a5565b9190910192915050565b60018060a01b038316815260406020820152600082518060408401526107128160608501602087016106a5565b601f01601f191691909101606001939250505056fe608060405234801561001057600080fd5b506105a6806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200e6166433af0aedd2d00610e79bdf008f29d6e0f5d0ecbcb775fac40004d953e64736f6c63430008130033a2646970667358221220692640a4c39c212fc492192c3f1a222f3611bc814d0e23bff4d232f5f02e366f64736f6c63430008130033",
168
+ "bytecode": "0x608060405234801561001057600080fd5b5060405161002060208201610044565b601f1982820381018352601f90910116604052805160209190910120600055610051565b6105c680610d8383390190565b610d23806100606000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630bf61a011461005c5780631b903b841461008557806340ad200d1461009857806381ae1f5b146100ab578063b3eeb5e2146100be575b600080fd5b61006f61006a366004610512565b6100d1565b60405161007c9190610568565b60405180910390f35b61006f61009336600461057c565b6100e7565b61006f6100a63660046105f7565b61016c565b61006f6100b936600461062c565b6101df565b61006f6100cc366004610658565b6101f5565b60006100df848484336102f2565b949350505050565b60008061012b853386868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103cd92505050565b90507fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca3128160405161015c9190610568565b60405180910390a1949350505050565b60008061017985856103fe565b6040516001600160f81b031960208201526001600160601b03193060601b166021820152603581018290526055810185905290915060009060750160408051808303601f1901815291905280516020909101206001600160a01b03169695505050505050565b60006101ee838360005461016c565b9392505050565b6000808360601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09250507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349826040516102709190610568565b60405180910390a18251156102eb576000826001600160a01b03168460405161029991906106c9565b6000604051808303816000865af19150503d80600081146102d6576040519150601f19603f3d011682016040523d82523d6000602084013e6102db565b606091505b50509050806102e957600080fd5b505b5092915050565b6000806040518060200161030590610447565b601f1982820381018352601f90910116604052905060006103278785846103cd565b60405163347d5e2560e21b815290915081906001600160a01b0382169063d1f578949061035a908a908a906004016106e5565b600060405180830381600087803b15801561037457600080fd5b505af1158015610388573d6000803e3d6000fd5b505050507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349816040516103ba9190610568565b60405180910390a1979650505050505050565b60008060006103dc86866103fe565b9050808451602086016000f59150813b6103f557600080fd5b50949350505050565b6000828260405160200161042992919091825260601b6001600160601b031916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b6105c68061072883390190565b80356001600160a01b038116811461046b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261049757600080fd5b81356001600160401b03808211156104b1576104b1610470565b604051601f8301601f19908116603f011681019082821181831017156104d9576104d9610470565b816040528381528660208588010111156104f257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561052757600080fd5b8335925061053760208501610454565b915060408401356001600160401b0381111561055257600080fd5b61055e86828701610486565b9150509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561059157600080fd5b8335925060208401356001600160401b03808211156105af57600080fd5b818601915086601f8301126105c357600080fd5b8135818111156105d257600080fd5b8760208285010111156105e457600080fd5b6020830194508093505050509250925092565b60008060006060848603121561060c57600080fd5b8335925061061c60208501610454565b9150604084013590509250925092565b6000806040838503121561063f57600080fd5b8235915061064f60208401610454565b90509250929050565b6000806040838503121561066b57600080fd5b61067483610454565b915060208301356001600160401b0381111561068f57600080fd5b61069b85828601610486565b9150509250929050565b60005b838110156106c05781810151838201526020016106a8565b50506000910152565b600082516106db8184602087016106a5565b9190910192915050565b60018060a01b038316815260406020820152600082518060408401526107128160608501602087016106a5565b601f01601f191691909101606001939250505056fe608060405234801561001057600080fd5b506105a6806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a6a0379f729b3d5f342e415d650b0de57ffd3cbf98bb1933f3a9e1c7bb15271864736f6c63430008130033a264697066735822122018486827b8070d6f459d1609384feb373e84dccc212fc79f3e64b90a35a45d1564736f6c63430008130033608060405234801561001057600080fd5b506105a6806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a6a0379f729b3d5f342e415d650b0de57ffd3cbf98bb1933f3a9e1c7bb15271864736f6c63430008130033",
169
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80630bf61a011461005c5780631b903b841461008557806340ad200d1461009857806381ae1f5b146100ab578063b3eeb5e2146100be575b600080fd5b61006f61006a366004610512565b6100d1565b60405161007c9190610568565b60405180910390f35b61006f61009336600461057c565b6100e7565b61006f6100a63660046105f7565b61016c565b61006f6100b936600461062c565b6101df565b61006f6100cc366004610658565b6101f5565b60006100df848484336102f2565b949350505050565b60008061012b853386868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103cd92505050565b90507fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca3128160405161015c9190610568565b60405180910390a1949350505050565b60008061017985856103fe565b6040516001600160f81b031960208201526001600160601b03193060601b166021820152603581018290526055810185905290915060009060750160408051808303601f1901815291905280516020909101206001600160a01b03169695505050505050565b60006101ee838360005461016c565b9392505050565b6000808360601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09250507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349826040516102709190610568565b60405180910390a18251156102eb576000826001600160a01b03168460405161029991906106c9565b6000604051808303816000865af19150503d80600081146102d6576040519150601f19603f3d011682016040523d82523d6000602084013e6102db565b606091505b50509050806102e957600080fd5b505b5092915050565b6000806040518060200161030590610447565b601f1982820381018352601f90910116604052905060006103278785846103cd565b60405163347d5e2560e21b815290915081906001600160a01b0382169063d1f578949061035a908a908a906004016106e5565b600060405180830381600087803b15801561037457600080fd5b505af1158015610388573d6000803e3d6000fd5b505050507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349816040516103ba9190610568565b60405180910390a1979650505050505050565b60008060006103dc86866103fe565b9050808451602086016000f59150813b6103f557600080fd5b50949350505050565b6000828260405160200161042992919091825260601b6001600160601b031916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b6105c68061072883390190565b80356001600160a01b038116811461046b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261049757600080fd5b81356001600160401b03808211156104b1576104b1610470565b604051601f8301601f19908116603f011681019082821181831017156104d9576104d9610470565b816040528381528660208588010111156104f257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561052757600080fd5b8335925061053760208501610454565b915060408401356001600160401b0381111561055257600080fd5b61055e86828701610486565b9150509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561059157600080fd5b8335925060208401356001600160401b03808211156105af57600080fd5b818601915086601f8301126105c357600080fd5b8135818111156105d257600080fd5b8760208285010111156105e457600080fd5b6020830194508093505050509250925092565b60008060006060848603121561060c57600080fd5b8335925061061c60208501610454565b9150604084013590509250925092565b6000806040838503121561063f57600080fd5b8235915061064f60208401610454565b90509250929050565b6000806040838503121561066b57600080fd5b61067483610454565b915060208301356001600160401b0381111561068f57600080fd5b61069b85828601610486565b9150509250929050565b60005b838110156106c05781810151838201526020016106a8565b50506000910152565b600082516106db8184602087016106a5565b9190910192915050565b60018060a01b038316815260406020820152600082518060408401526107128160608501602087016106a5565b601f01601f191691909101606001939250505056fe608060405234801561001057600080fd5b506105a6806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ef565b61005e565b61005c61005761013d565b61014c565b565b6000610068610170565b6001600160a01b0316146100b15760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064015b60405180910390fd5b6100dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61047f565b60008051602061052a833981519152146100f8576100f86104a0565b6101388383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061018c915050565b505050565b6000610147610170565b905090565b3660008037600080366000845af43d6000803e80801561016b573d6000f35b3d6000fd5b60008051602061052a833981519152546001600160a01b031690565b610195836101b7565b6000825111806101a25750805b15610138576101b183836101f7565b50505050565b6101c081610225565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061021c838360405180606001604052806027815260200161054a602791396102bf565b90505b92915050565b61022e81610337565b6102905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100a8565b60008051602061052a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516102dc91906104da565b600060405180830381855af49150503d8060008114610317576040519150601f19603f3d011682016040523d82523d6000602084013e61031c565b606091505b509150915061032d86838387610346565b9695505050505050565b6001600160a01b03163b151590565b606083156103b35782516000036103ac5761036085610337565b6103ac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100a8565b50816103bd565b6103bd83836103c5565b949350505050565b8151156103d55781518083602001fd5b8060405162461bcd60e51b81526004016100a891906104f6565b60008060006040848603121561040457600080fd5b83356001600160a01b038116811461041b57600080fd5b925060208401356001600160401b038082111561043757600080fd5b818601915086601f83011261044b57600080fd5b81358181111561045a57600080fd5b87602082850101111561046c57600080fd5b6020830194508093505050509250925092565b8181038181111561021f57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156104d15781810151838201526020016104b9565b50506000910152565b600082516104ec8184602087016104b6565b9190910192915050565b60208152600082518060208401526105158160408501602087016104b6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a6a0379f729b3d5f342e415d650b0de57ffd3cbf98bb1933f3a9e1c7bb15271864736f6c63430008130033a264697066735822122018486827b8070d6f459d1609384feb373e84dccc212fc79f3e64b90a35a45d1564736f6c63430008130033",
170
170
  "linkReferences": {},
171
171
  "deployedLinkReferences": {}
172
172
  }
@@ -51,6 +51,7 @@ contract Faucet is Initializable, UUPSUpgradeable, AccessControlUpgradeable {
51
51
  uint32 public version;
52
52
  uint8 public minTopping; //percentage of topping amount, that user can request to top
53
53
  address public votingContract; //flowstate voting users get extra gas
54
+ mapping(address => uint256) public bans;
54
55
 
55
56
  function initialize(
56
57
  NameService _ns,
@@ -99,6 +100,7 @@ contract Faucet is Initializable, UUPSUpgradeable, AccessControlUpgradeable {
99
100
  hasRole(RELAYER_ROLE, msg.sender),
100
101
  "not authorized"
101
102
  );
103
+ require(bans[toTop] < block.timestamp, "banned");
102
104
  _;
103
105
  }
104
106
 
@@ -271,4 +273,8 @@ contract Faucet is Initializable, UUPSUpgradeable, AccessControlUpgradeable {
271
273
  ) external onlyRole(DEFAULT_ADMIN_ROLE) {
272
274
  votingContract = _voting;
273
275
  }
276
+
277
+ function banAddress(address _user) external onlyRole(RELAYER_ROLE) {
278
+ bans[_user] = block.timestamp + 3 days;
279
+ }
274
280
  }
@@ -47,6 +47,7 @@ contract FuseFaucetV2 is Initializable {
47
47
  address public owner;
48
48
  uint32 public version;
49
49
  uint8 public minTopping;
50
+ mapping(address => uint256) public bans;
50
51
 
51
52
  function initialize(
52
53
  NameService _ns,
@@ -109,6 +110,10 @@ contract FuseFaucetV2 is Initializable {
109
110
  require(msg.sender == owner, "not owner");
110
111
  _;
111
112
  }
113
+ modifier onlyOwnerOrRelayer() {
114
+ require(msg.sender == owner || msg.sender == relayer, "not owner");
115
+ _;
116
+ }
112
117
 
113
118
  receive() external payable {}
114
119
 
@@ -122,6 +127,7 @@ contract FuseFaucetV2 is Initializable {
122
127
  msg.sender == relayer,
123
128
  "not authorized"
124
129
  );
130
+ require(bans[toTop] < block.timestamp, "banned");
125
131
  _;
126
132
  }
127
133
 
@@ -282,4 +288,8 @@ contract FuseFaucetV2 is Initializable {
282
288
  function setMinTopping(uint8 _minTop) external onlyOwner {
283
289
  minTopping = _minTop;
284
290
  }
291
+
292
+ function banAddress(address _user) external onlyOwner {
293
+ bans[_user] = block.timestamp + 3 days;
294
+ }
285
295
  }
@@ -1,5 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
 
3
+ //pragma solidity =0.8.16; // xdc deployed version
3
4
  pragma solidity >=0.8;
4
5
 
5
6
  import "@openzeppelin/contracts/proxy/Proxy.sol";
@@ -46,10 +47,10 @@ contract ProxyFactory1967 {
46
47
  contractCodeHash = keccak256(type(ERC1967Proxy).creationCode);
47
48
  }
48
49
 
49
- function deployMinimal(
50
- address _logic,
51
- bytes memory _data
52
- ) public returns (address proxy) {
50
+ function deployMinimal(address _logic, bytes memory _data)
51
+ public
52
+ returns (address proxy)
53
+ {
53
54
  // Adapted from https://github.com/optionality/clone-factory/blob/32782f82dfc5a00d103a7e61a17a5dedbd1e8e9d/contracts/CloneFactory.sol
54
55
  bytes20 targetBytes = bytes20(_logic);
55
56
  assembly {
@@ -82,19 +83,20 @@ contract ProxyFactory1967 {
82
83
  return _deployProxy(_salt, _logic, _data, msg.sender);
83
84
  }
84
85
 
85
- function deployCode(
86
- uint256 _salt,
87
- bytes calldata _bytecode
88
- ) external returns (address) {
86
+ function deployCode(uint256 _salt, bytes calldata _bytecode)
87
+ external
88
+ returns (address)
89
+ {
89
90
  address addr = _deployCode(_salt, msg.sender, _bytecode);
90
91
  emit ContractCreated(addr);
91
92
  return addr;
92
93
  }
93
94
 
94
- function getDeploymentAddress(
95
- uint256 _salt,
96
- address _sender
97
- ) public view returns (address) {
95
+ function getDeploymentAddress(uint256 _salt, address _sender)
96
+ public
97
+ view
98
+ returns (address)
99
+ {
98
100
  return getDeploymentAddress(_salt, _sender, contractCodeHash);
99
101
  }
100
102
 
@@ -145,10 +147,11 @@ contract ProxyFactory1967 {
145
147
  return addr;
146
148
  }
147
149
 
148
- function _getSalt(
149
- uint256 _salt,
150
- address _sender
151
- ) internal pure returns (bytes32) {
150
+ function _getSalt(uint256 _salt, address _sender)
151
+ internal
152
+ pure
153
+ returns (bytes32)
154
+ {
152
155
  return keccak256(abi.encodePacked(_salt, _sender));
153
156
  }
154
157
  }
package/hardhat.config.ts CHANGED
@@ -47,39 +47,44 @@ const xdc = {
47
47
  // console.log({ mnemonic: sha3(mnemonic) });
48
48
  const hhconfig: HardhatUserConfig = {
49
49
  solidity: {
50
- compilers: [
51
- {
52
- version: "0.8.19",
53
- settings: {
54
- optimizer: {
55
- enabled: true,
56
- runs: 0
57
- }
58
- }
50
+ version: "0.8.19",
51
+ settings: {
52
+ optimizer: {
53
+ enabled: true,
54
+ runs: 0
59
55
  }
60
- ]
56
+ }
61
57
  },
62
58
  typechain: {
63
59
  outDir: "types"
64
60
  },
65
61
  sourcify: {
66
- enabled: false
62
+ enabled: true
67
63
  },
68
64
  etherscan: {
69
65
  apiKey: {
70
66
  mainnet: etherscan_key,
71
67
  txdc: etherscan_key,
72
68
  xdc: etherscan_key,
73
- celo: celoscan_key,
69
+ celo: etherscan_key,
74
70
  alfajores: celoscan_key,
75
- base: basescan_key
71
+ base: basescan_key,
72
+ fuse: etherscan_key
76
73
  },
77
74
  customChains: [
75
+ {
76
+ network: "fuse",
77
+ chainId: 122,
78
+ urls: {
79
+ apiURL: "https://explorer.fuse.io/api",
80
+ browserURL: "https://explorer.fuse.io/"
81
+ }
82
+ },
78
83
  {
79
84
  network: "celo",
80
85
  chainId: 42220,
81
86
  urls: {
82
- apiURL: "https://api.celoscan.io/api",
87
+ apiURL: "https://api.etherscan.io/v2/api?chainid=42220",
83
88
  browserURL: "https://celoscan.io/"
84
89
  }
85
90
  },
@@ -158,7 +163,7 @@ const hhconfig: HardhatUserConfig = {
158
163
  url: "https://rpc.fuse.io/",
159
164
  chainId: 122,
160
165
  gas: 6000000,
161
- gasPrice: 10000000000
166
+ gasPrice: 11e9
162
167
  },
163
168
  fuseexplorer: {
164
169
  accounts: { mnemonic },
@@ -186,7 +191,7 @@ const hhconfig: HardhatUserConfig = {
186
191
  url: "https://rpc.fuse.io/",
187
192
  chainId: 122,
188
193
  gas: 6000000,
189
- gasPrice: 10000000000
194
+ gasPrice: 11e9
190
195
  },
191
196
  "staging-mainnet": {
192
197
  accounts: { mnemonic },
@@ -199,7 +204,7 @@ const hhconfig: HardhatUserConfig = {
199
204
  accounts: [deployerPrivateKey],
200
205
  url: "https://rpc.fuse.io/",
201
206
  gas: 3000000,
202
- gasPrice: 10000000000,
207
+ gasPrice: 11e9,
203
208
  chainId: 122
204
209
  },
205
210
  "production-mainnet": {
@@ -220,7 +225,7 @@ const hhconfig: HardhatUserConfig = {
220
225
  accounts: { mnemonic },
221
226
  url: "https://forno.celo.org",
222
227
  gas: 3000000,
223
- gasPrice: 25.01e9,
228
+ gasPrice: 26e9,
224
229
  chainId: 42220
225
230
  },
226
231
  alfajores: {
@@ -239,14 +244,14 @@ const hhconfig: HardhatUserConfig = {
239
244
  accounts: { mnemonic },
240
245
  url: "https://forno.celo.org",
241
246
  gas: 3000000,
242
- gasPrice: 25e9,
247
+ gasPrice: 26e9,
243
248
  chainId: 42220
244
249
  },
245
250
  "development-celo": {
246
251
  accounts: { mnemonic },
247
252
  url: "https://forno.celo.org",
248
253
  gas: 3000000,
249
- gasPrice: 25e9,
254
+ gasPrice: 26e9,
250
255
  chainId: 42220
251
256
  },
252
257
  "development-base": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddollar/goodprotocol",
3
- "version": "2.0.34-beta.3",
3
+ "version": "2.1.0",
4
4
  "description": "GoodDollar Protocol",
5
5
  "engines": {
6
6
  "node": ">=16.x"