@venusprotocol/venus-protocol 10.1.0-slim-dev.6 → 10.1.0-slim-dev.7

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 (116) hide show
  1. package/artifacts/contracts/Admin/VBNBAdmin.sol/VBNBAdmin.json +2 -2
  2. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/VBNBAdminStorage.json +2 -2
  3. package/artifacts/contracts/Comptroller/ComptrollerInterface.sol/ComptrollerInterface.json +65 -0
  4. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV10Storage.json +2 -2
  5. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV11Storage.json +2 -2
  6. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV12Storage.json +2 -2
  7. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV13Storage.json +2 -2
  8. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV14Storage.json +2 -2
  9. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV15Storage.json +2 -2
  10. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV16Storage.json +2 -2
  11. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV17Storage.json +2 -2
  12. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV18Storage.json +736 -0
  13. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV1Storage.json +2 -2
  14. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV2Storage.json +2 -2
  15. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV3Storage.json +2 -2
  16. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV4Storage.json +2 -2
  17. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV5Storage.json +2 -2
  18. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV6Storage.json +2 -2
  19. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV7Storage.json +2 -2
  20. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV8Storage.json +2 -2
  21. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/ComptrollerV9Storage.json +2 -2
  22. package/artifacts/contracts/Comptroller/ComptrollerStorage.sol/UnitrollerAdminStorage.json +2 -2
  23. package/artifacts/contracts/Comptroller/Diamond/Diamond.sol/Diamond.json +34 -2
  24. package/artifacts/contracts/Comptroller/Diamond/DiamondConsolidated.sol/DiamondConsolidated.json +310 -2
  25. package/artifacts/contracts/Comptroller/Diamond/facets/FacetBase.sol/FacetBase.json +128 -2
  26. package/artifacts/contracts/Comptroller/Diamond/facets/FlashLoanFacet.sol/FlashLoanFacet.json +1208 -0
  27. package/artifacts/contracts/Comptroller/Diamond/facets/MarketFacet.sol/MarketFacet.json +128 -2
  28. package/artifacts/contracts/Comptroller/Diamond/facets/PolicyFacet.sol/PolicyFacet.json +128 -2
  29. package/artifacts/contracts/Comptroller/Diamond/facets/RewardFacet.sol/RewardFacet.json +128 -2
  30. package/artifacts/contracts/Comptroller/Diamond/facets/SetterFacet.sol/SetterFacet.json +197 -2
  31. package/artifacts/contracts/Comptroller/Diamond/facets/XVSRewardsHelper.sol/XVSRewardsHelper.json +128 -2
  32. package/artifacts/contracts/Comptroller/Diamond/interfaces/IFlashLoanFacet.sol/IFlashLoanFacet.json +44 -0
  33. package/artifacts/contracts/Comptroller/Diamond/interfaces/ISetterFacet.sol/ISetterFacet.json +31 -0
  34. package/artifacts/contracts/Comptroller/Unitroller.sol/Unitroller.json +96 -2
  35. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV10StorageR1.json +2 -2
  36. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV11StorageR1.json +2 -2
  37. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV12StorageR1.json +2 -2
  38. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV13StorageR1.json +2 -2
  39. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV14StorageR1.json +2 -2
  40. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV15StorageR1.json +2 -2
  41. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV16StorageR1.json +2 -2
  42. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV1StorageR1.json +2 -2
  43. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV2StorageR1.json +2 -2
  44. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV3StorageR1.json +2 -2
  45. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV4StorageR1.json +2 -2
  46. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV5StorageR1.json +2 -2
  47. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV6StorageR1.json +2 -2
  48. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV7StorageR1.json +2 -2
  49. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV8StorageR1.json +2 -2
  50. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/ComptrollerV9StorageR1.json +2 -2
  51. package/artifacts/contracts/Comptroller/legacy/ComptrollerStorageR1.sol/UnitrollerAdminStorageR1.json +2 -2
  52. package/artifacts/contracts/Comptroller/legacy/Diamond/DiamondConsolidatedR1.sol/DiamondConsolidatedR1.json +96 -2
  53. package/artifacts/contracts/Comptroller/legacy/Diamond/DiamondR1.sol/DiamondR1.json +2 -2
  54. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/FacetBaseR1.sol/FacetBaseR1.json +96 -2
  55. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/MarketFacetR1.sol/MarketFacetR1.json +96 -2
  56. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/PolicyFacetR1.sol/PolicyFacetR1.json +96 -2
  57. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/RewardFacetR1.sol/RewardFacetR1.json +96 -2
  58. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/SetterFacetR1.sol/SetterFacetR1.json +96 -2
  59. package/artifacts/contracts/Comptroller/legacy/Diamond/facets/XVSRewardsHelperR1.sol/XVSRewardsHelperR1.json +96 -2
  60. package/artifacts/contracts/FlashLoan/interfaces/IFlashLoanReceiver.sol/IFlashLoanReceiver.json +60 -0
  61. package/artifacts/contracts/Lens/ComptrollerLens.sol/ComptrollerLens.json +96 -2
  62. package/artifacts/contracts/Lens/SnapshotLens.sol/SnapshotLens.json +2 -2
  63. package/artifacts/contracts/Lens/VenusLens.sol/VenusLens.json +2 -2
  64. package/artifacts/contracts/Liquidator/Liquidator.sol/Liquidator.json +2 -2
  65. package/artifacts/contracts/Tokens/VAI/VAIController.sol/VAIController.json +2 -2
  66. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIControllerStorageG1.json +2 -2
  67. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIControllerStorageG2.json +2 -2
  68. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIControllerStorageG3.json +2 -2
  69. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIControllerStorageG4.json +2 -2
  70. package/artifacts/contracts/Tokens/VAI/VAIControllerStorage.sol/VAIUnitrollerAdminStorage.json +2 -2
  71. package/artifacts/contracts/Tokens/VAI/VAIUnitroller.sol/VAIUnitroller.json +2 -2
  72. package/artifacts/contracts/Tokens/VTokens/VBNB.sol/VBNB.json +372 -2
  73. package/artifacts/contracts/Tokens/VTokens/VBep20.sol/VBep20.json +372 -2
  74. package/artifacts/contracts/Tokens/VTokens/VBep20Delegate.sol/VBep20Delegate.json +372 -2
  75. package/artifacts/contracts/Tokens/VTokens/VBep20Delegator.sol/VBep20Delegator.json +229 -2
  76. package/artifacts/contracts/Tokens/VTokens/VBep20Immutable.sol/VBep20Immutable.json +372 -2
  77. package/artifacts/contracts/Tokens/VTokens/VToken.sol/VToken.json +370 -0
  78. package/artifacts/contracts/Tokens/VTokens/VTokenInterfaces.sol/VTokenInterface.json +227 -0
  79. package/artifacts/contracts/Tokens/VTokens/VTokenInterfaces.sol/VTokenStorage.json +54 -2
  80. package/artifacts/contracts/Tokens/VTokens/VTokenInterfaces.sol/VTokenStorageBase.json +2 -2
  81. package/artifacts/contracts/Tokens/test/IERC20NonStandard.sol/IERC20NonStandard.json +182 -0
  82. package/artifacts/contracts/Utils/ErrorReporter.sol/ComptrollerErrorReporter.json +96 -2
  83. package/artifacts/contracts/Utils/ErrorReporter.sol/TokenErrorReporter.json +2 -2
  84. package/artifacts/contracts/Utils/ErrorReporter.sol/VAIControllerErrorReporter.json +2 -2
  85. package/artifacts/contracts/Utils/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +16 -0
  86. package/artifacts/contracts/Utils/TransientSlot.sol/TransientSlot.json +10 -0
  87. package/artifacts/contracts/test/BadFlashLoanReceiver.sol/BadFlashLoanReceiver.json +112 -0
  88. package/artifacts/contracts/test/BorrowDebtFlashLoanReceiver.sol/BorrowDebtFlashLoanReceiver.json +112 -0
  89. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +310 -2
  90. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +2 -2
  91. package/artifacts/contracts/test/ComptrollerMock.sol/ComptrollerMock.json +310 -2
  92. package/artifacts/contracts/test/ComptrollerMockR1.sol/ComptrollerMockR1.json +96 -2
  93. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +310 -2
  94. package/artifacts/contracts/test/DiamondHarness.sol/DiamondHarness.json +34 -2
  95. package/artifacts/contracts/test/EvilXDelegator.sol/EvilXDelegator.json +253 -2
  96. package/artifacts/contracts/test/EvilXToken.sol/EvilXToken.json +372 -2
  97. package/artifacts/contracts/test/EvilXToken.sol/VBep20Scenario.json +372 -2
  98. package/artifacts/contracts/test/FlashLoanReceiverBase.sol/FlashLoanReceiverBase.json +73 -0
  99. package/artifacts/contracts/test/InsufficientRepaymentFlashLoanReceiver.sol/InsufficientRepaymentFlashLoanReceiver.json +112 -0
  100. package/artifacts/contracts/test/LiquidatorHarness.sol/LiquidatorHarness.json +2 -2
  101. package/artifacts/contracts/test/MockFlashLoanReceiver.sol/MockFlashLoanReceiver.json +112 -0
  102. package/artifacts/contracts/test/MockProtocolShareReserve.sol/MockProtocolShareReserve.json +2 -2
  103. package/artifacts/contracts/test/MockVBNB.sol/MockVBNB.json +372 -2
  104. package/artifacts/contracts/test/SimplePriceOracle.sol/SimplePriceOracle.json +2 -2
  105. package/artifacts/contracts/test/VAIControllerHarness.sol/VAIControllerHarness.json +2 -2
  106. package/artifacts/contracts/test/VBep20Harness.sol/VBep20DelegateHarness.json +372 -2
  107. package/artifacts/contracts/test/VBep20Harness.sol/VBep20DelegateScenario.json +372 -2
  108. package/artifacts/contracts/test/VBep20Harness.sol/VBep20DelegateScenarioExtra.json +372 -2
  109. package/artifacts/contracts/test/VBep20Harness.sol/VBep20DelegatorScenario.json +213 -42
  110. package/artifacts/contracts/test/VBep20Harness.sol/VBep20Harness.json +372 -2
  111. package/artifacts/contracts/test/VBep20Harness.sol/VBep20Scenario.json +372 -2
  112. package/artifacts/contracts/test/VBep20Harness.sol/VEvil.json +372 -2
  113. package/artifacts/contracts/test/VBep20MockDelegate.sol/VBep20MockDelegate.json +372 -2
  114. package/deployments/bscmainnet_addresses.json +8 -7
  115. package/deployments/bsctestnet_addresses.json +8 -7
  116. package/package.json +3 -2
@@ -0,0 +1,73 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "FlashLoanReceiverBase",
4
+ "sourceName": "contracts/test/FlashLoanReceiverBase.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "COMPTROLLER",
9
+ "outputs": [
10
+ {
11
+ "internalType": "contract ComptrollerInterface",
12
+ "name": "",
13
+ "type": "address"
14
+ }
15
+ ],
16
+ "stateMutability": "view",
17
+ "type": "function"
18
+ },
19
+ {
20
+ "inputs": [
21
+ {
22
+ "internalType": "contract VToken[]",
23
+ "name": "vTokens",
24
+ "type": "address[]"
25
+ },
26
+ {
27
+ "internalType": "uint256[]",
28
+ "name": "amounts",
29
+ "type": "uint256[]"
30
+ },
31
+ {
32
+ "internalType": "uint256[]",
33
+ "name": "premiums",
34
+ "type": "uint256[]"
35
+ },
36
+ {
37
+ "internalType": "address",
38
+ "name": "initiator",
39
+ "type": "address"
40
+ },
41
+ {
42
+ "internalType": "address",
43
+ "name": "onBehalf",
44
+ "type": "address"
45
+ },
46
+ {
47
+ "internalType": "bytes",
48
+ "name": "param",
49
+ "type": "bytes"
50
+ }
51
+ ],
52
+ "name": "executeOperation",
53
+ "outputs": [
54
+ {
55
+ "internalType": "bool",
56
+ "name": "success",
57
+ "type": "bool"
58
+ },
59
+ {
60
+ "internalType": "uint256[]",
61
+ "name": "repayAmounts",
62
+ "type": "uint256[]"
63
+ }
64
+ ],
65
+ "stateMutability": "nonpayable",
66
+ "type": "function"
67
+ }
68
+ ],
69
+ "bytecode": "0x",
70
+ "deployedBytecode": "0x",
71
+ "linkReferences": {},
72
+ "deployedLinkReferences": {}
73
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "InsufficientRepaymentFlashLoanReceiver",
4
+ "sourceName": "contracts/test/InsufficientRepaymentFlashLoanReceiver.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract ComptrollerInterface",
10
+ "name": "comptroller",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "COMPTROLLER",
20
+ "outputs": [
21
+ {
22
+ "internalType": "contract ComptrollerInterface",
23
+ "name": "",
24
+ "type": "address"
25
+ }
26
+ ],
27
+ "stateMutability": "view",
28
+ "type": "function"
29
+ },
30
+ {
31
+ "inputs": [
32
+ {
33
+ "internalType": "contract VToken[]",
34
+ "name": "assets",
35
+ "type": "address[]"
36
+ },
37
+ {
38
+ "internalType": "uint256[]",
39
+ "name": "",
40
+ "type": "uint256[]"
41
+ },
42
+ {
43
+ "internalType": "uint256[]",
44
+ "name": "premiums",
45
+ "type": "uint256[]"
46
+ },
47
+ {
48
+ "internalType": "address",
49
+ "name": "initiator",
50
+ "type": "address"
51
+ },
52
+ {
53
+ "internalType": "address",
54
+ "name": "onBehalf",
55
+ "type": "address"
56
+ },
57
+ {
58
+ "internalType": "bytes",
59
+ "name": "param",
60
+ "type": "bytes"
61
+ }
62
+ ],
63
+ "name": "executeOperation",
64
+ "outputs": [
65
+ {
66
+ "internalType": "bool",
67
+ "name": "",
68
+ "type": "bool"
69
+ },
70
+ {
71
+ "internalType": "uint256[]",
72
+ "name": "",
73
+ "type": "uint256[]"
74
+ }
75
+ ],
76
+ "stateMutability": "nonpayable",
77
+ "type": "function"
78
+ },
79
+ {
80
+ "inputs": [
81
+ {
82
+ "internalType": "contract VToken[]",
83
+ "name": "assets",
84
+ "type": "address[]"
85
+ },
86
+ {
87
+ "internalType": "uint256[]",
88
+ "name": "amounts",
89
+ "type": "uint256[]"
90
+ },
91
+ {
92
+ "internalType": "address payable",
93
+ "name": "receiver",
94
+ "type": "address"
95
+ },
96
+ {
97
+ "internalType": "bytes",
98
+ "name": "param",
99
+ "type": "bytes"
100
+ }
101
+ ],
102
+ "name": "requestFlashLoan",
103
+ "outputs": [],
104
+ "stateMutability": "nonpayable",
105
+ "type": "function"
106
+ }
107
+ ],
108
+ "bytecode": "0x6080604052348015600e575f80fd5b506040516107d23803806107d2833981016040819052602b91604e565b5f80546001600160a01b0319166001600160a01b03929092169190911790556079565b5f60208284031215605d575f80fd5b81516001600160a01b03811681146072575f80fd5b9392505050565b61074c806100865f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80635f82c67e14610043578063e99046b914610072578063fc08f9f614610087575b5f80fd5b5f54610055906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100856100803660046103b4565b6100a8565b005b61009a61009536600461046b565b61011b565b60405161006992919061054c565b5f546040516315513b6760e21b81526001600160a01b0390911690635544ed9c906100e590339087908c908c908c908c908b908b906004016105c4565b5f604051808303815f87803b1580156100fc575f80fd5b505af115801561010e573d5f803e3d5ffd5b5050505050505050505050565b5f60605f61012b8d8d8b8b610140565b60019e909d509b505050505050505050505050565b6060835f8167ffffffffffffffff81111561015d5761015d610673565b604051908082528060200260200182016040528015610186578160200160208202803683370190505b5090505f5b8281101561030c575f60028787848181106101a8576101a8610687565b905060200201356101b9919061069b565b90508888838181106101cd576101cd610687565b90506020020160208101906101e291906106ba565b6001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561021d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024191906106dc565b6001600160a01b031663095ea7b38a8a8581811061026157610261610687565b905060200201602081019061027691906106ba565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156102c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e491906106f7565b50808383815181106102f8576102f8610687565b60209081029190910101525060010161018b565b509695505050505050565b5f8083601f840112610327575f80fd5b50813567ffffffffffffffff81111561033e575f80fd5b6020830191508360208260051b8501011115610358575f80fd5b9250929050565b6001600160a01b0381168114610373575f80fd5b50565b5f8083601f840112610386575f80fd5b50813567ffffffffffffffff81111561039d575f80fd5b602083019150836020828501011115610358575f80fd5b5f805f805f805f6080888a0312156103ca575f80fd5b873567ffffffffffffffff808211156103e1575f80fd5b6103ed8b838c01610317565b909950975060208a0135915080821115610405575f80fd5b6104118b838c01610317565b909750955060408a013591506104268261035f565b9093506060890135908082111561043b575f80fd5b506104488a828b01610376565b989b979a50959850939692959293505050565b80356104668161035f565b919050565b5f805f805f805f805f8060c08b8d031215610484575f80fd5b8a3567ffffffffffffffff8082111561049b575f80fd5b6104a78e838f01610317565b909c509a5060208d01359150808211156104bf575f80fd5b6104cb8e838f01610317565b909a50985060408d01359150808211156104e3575f80fd5b6104ef8e838f01610317565b909850965086915061050360608e0161045b565b955061051160808e0161045b565b945060a08d0135915080821115610526575f80fd5b506105338d828e01610376565b915080935050809150509295989b9194979a5092959850565b5f6040820184151583526020604060208501528185518084526060860191506020870193505f5b8181101561058f57845183529383019391830191600101610573565b5090979650505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03898116825288811660208084019190915260a06040840181905283018890525f91899160c08501845b8b81101561061c5784356106088161035f565b8416825293820193908201906001016105f5565b5085810360608701528881526001600160fb1b0389111561063b575f80fd5b8860051b9350838a838301379092018481038301608086015291610662818401878961059c565b9d9c50505050505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f826106b557634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156106ca575f80fd5b81356106d58161035f565b9392505050565b5f602082840312156106ec575f80fd5b81516106d58161035f565b5f60208284031215610707575f80fd5b815180151581146106d5575f80fdfea26469706673582212202169ae680c6a7744c4b87a1b56f82047cdabc9eb41e9141522702f37137d5d6f64736f6c63430008190033",
109
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80635f82c67e14610043578063e99046b914610072578063fc08f9f614610087575b5f80fd5b5f54610055906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100856100803660046103b4565b6100a8565b005b61009a61009536600461046b565b61011b565b60405161006992919061054c565b5f546040516315513b6760e21b81526001600160a01b0390911690635544ed9c906100e590339087908c908c908c908c908b908b906004016105c4565b5f604051808303815f87803b1580156100fc575f80fd5b505af115801561010e573d5f803e3d5ffd5b5050505050505050505050565b5f60605f61012b8d8d8b8b610140565b60019e909d509b505050505050505050505050565b6060835f8167ffffffffffffffff81111561015d5761015d610673565b604051908082528060200260200182016040528015610186578160200160208202803683370190505b5090505f5b8281101561030c575f60028787848181106101a8576101a8610687565b905060200201356101b9919061069b565b90508888838181106101cd576101cd610687565b90506020020160208101906101e291906106ba565b6001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561021d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024191906106dc565b6001600160a01b031663095ea7b38a8a8581811061026157610261610687565b905060200201602081019061027691906106ba565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156102c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e491906106f7565b50808383815181106102f8576102f8610687565b60209081029190910101525060010161018b565b509695505050505050565b5f8083601f840112610327575f80fd5b50813567ffffffffffffffff81111561033e575f80fd5b6020830191508360208260051b8501011115610358575f80fd5b9250929050565b6001600160a01b0381168114610373575f80fd5b50565b5f8083601f840112610386575f80fd5b50813567ffffffffffffffff81111561039d575f80fd5b602083019150836020828501011115610358575f80fd5b5f805f805f805f6080888a0312156103ca575f80fd5b873567ffffffffffffffff808211156103e1575f80fd5b6103ed8b838c01610317565b909950975060208a0135915080821115610405575f80fd5b6104118b838c01610317565b909750955060408a013591506104268261035f565b9093506060890135908082111561043b575f80fd5b506104488a828b01610376565b989b979a50959850939692959293505050565b80356104668161035f565b919050565b5f805f805f805f805f8060c08b8d031215610484575f80fd5b8a3567ffffffffffffffff8082111561049b575f80fd5b6104a78e838f01610317565b909c509a5060208d01359150808211156104bf575f80fd5b6104cb8e838f01610317565b909a50985060408d01359150808211156104e3575f80fd5b6104ef8e838f01610317565b909850965086915061050360608e0161045b565b955061051160808e0161045b565b945060a08d0135915080821115610526575f80fd5b506105338d828e01610376565b915080935050809150509295989b9194979a5092959850565b5f6040820184151583526020604060208501528185518084526060860191506020870193505f5b8181101561058f57845183529383019391830191600101610573565b5090979650505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03898116825288811660208084019190915260a06040840181905283018890525f91899160c08501845b8b81101561061c5784356106088161035f565b8416825293820193908201906001016105f5565b5085810360608701528881526001600160fb1b0389111561063b575f80fd5b8860051b9350838a838301379092018481038301608086015291610662818401878961059c565b9d9c50505050505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f826106b557634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156106ca575f80fd5b81356106d58161035f565b9392505050565b5f602082840312156106ec575f80fd5b81516106d58161035f565b5f60208284031215610707575f80fd5b815180151581146106d5575f80fdfea26469706673582212202169ae680c6a7744c4b87a1b56f82047cdabc9eb41e9141522702f37137d5d6f64736f6c63430008190033",
110
+ "linkReferences": {},
111
+ "deployedLinkReferences": {}
112
+ }
@@ -1044,8 +1044,8 @@
1044
1044
  "type": "receive"
1045
1045
  }
1046
1046
  ],
1047
- "bytecode": "0x610100604052348015610010575f80fd5b5060405161337e38038061337e83398101604081905261002f916101de565b82828261003b826100e4565b610044836100e4565b61004d816100e4565b6001600160a01b0380831660805281811660e052831660a081905260408051639254f5e560e01b81529051639254f5e5916004808201926020929091908290030181865afa1580156100a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100c59190610228565b6001600160a01b031660c0526100d961010e565b50505050505061024a565b6001600160a01b03811661010b576040516342bcdf7f60e11b815260040160405180910390fd5b50565b5f54610100900460ff16156101795760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146101c8575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461010b575f80fd5b5f805f606084860312156101f0575f80fd5b83516101fb816101ca565b602085015190935061020c816101ca565b604085015190925061021d816101ca565b809150509250925092565b5f60208284031215610238575f80fd5b8151610243816101ca565b9392505050565b60805160a05160c05160e05161306061031e5f395f8181610579015281816125000152818161257d015281816125f3015261265901525f818161046001528181610b4e015281816116d00152818161176f015281816118a601528181611910015281816119b4015281816119e80152611a3d01525f818161034901528181610931015281816117400152818161181001528181611adc015281816120f5015281816125d101526127bf01525f81816102fe01528181610a3f01528181610ac601528181611e060152611f1b01526130605ff3fe6080604052600436106101e9575f3560e01c80638da5cb5b11610108578063b4a0bdf31161009d578063e30c39781161006d578063e30c3978146105ba578063e9a44fd9146105d7578063f2fde38b146105f6578063f52421b314610615578063f7dcd96e14610634575f80fd5b8063b4a0bdf314610536578063b8332db714610554578063d02eb3f414610568578063e1e8ae6a1461059b575f80fd5b8063a093796a116100d8578063a093796a146104b6578063b09c7742146104d5578063b26461de146104e9578063b4988fd014610517575f80fd5b80638da5cb5b1461041d5780638e3525fc1461043a5780639254f5e51461044f5780639eb8a17914610482575f80fd5b80635fe3b5671161017e5780637debe3fe1161014e5780637debe3fe1461039d5780638722ddf2146103bc5780638765adcb146103df57806389a2bc25146103fe575f80fd5b80635fe3b5671461033857806364fd70781461036b578063715018a61461037e57806379ba509714610389575f80fd5b806336eab4ae116101b957806336eab4ae1461026757806344b3716a1461029557806347a6a971146102ce5780635ba3792d146102ed575f80fd5b80630d060ea8146101f45780630e32cb861461020a578063107568df1461022957806311ec4b7a14610248575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50610208610653565b005b348015610215575f80fd5b50610208610224366004612bf7565b610731565b348015610234575f80fd5b50610208610243366004612bf7565b610745565b348015610253575f80fd5b50610208610262366004612bf7565b610756565b348015610272575f80fd5b5060cd546102809060ff1681565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b506102806102af366004612c19565b60ca60209081525f928352604080842090915290825290205460ff1681565b3480156102d9575f80fd5b506102086102e8366004612c19565b610823565b3480156102f8575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161028c565b348015610343575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b610208610379366004612c50565b6108f5565b348015610208575f80fd5b348015610394575f80fd5b50610208610ca3565b3480156103a8575f80fd5b506102086103b7366004612c19565b610d1a565b3480156103c7575f80fd5b506103d160cc5481565b60405190815260200161028c565b3480156103ea575f80fd5b506102086103f9366004612bf7565b610e0d565b348015610409575f80fd5b50610208610418366004612ca0565b610ed6565b348015610428575f80fd5b506033546001600160a01b0316610320565b348015610445575f80fd5b506103d160c95481565b34801561045a575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b34801561048d575f80fd5b506104a161049c366004612cb7565b610f5e565b6040805192835260208301919091520161028c565b3480156104c1575f80fd5b506102086104d0366004612ca0565b610fb3565b3480156104e0575f80fd5b50610208611059565b3480156104f4575f80fd5b50610280610503366004612bf7565b60cb6020525f908152604090205460ff1681565b348015610522575f80fd5b50610208610531366004612cf5565b611137565b348015610541575f80fd5b50610102546001600160a01b0316610320565b34801561055f575f80fd5b50610208611247565b348015610573575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a6575f80fd5b506104a16105b5366004612cb7565b611261565b3480156105c5575f80fd5b506065546001600160a01b0316610320565b3480156105e2575f80fd5b5060cf54610320906001600160a01b031681565b348015610601575f80fd5b50610208610610366004612bf7565b61127a565b348015610620575f80fd5b5061020861062f366004612ca0565b6112eb565b34801561063f575f80fd5b5061032061064e366004612ca0565b61136a565b6106916040518060400160405280601881526020017f7061757365466f7263655641494c697175696461746528290000000000000000815250611392565b60cd5460ff166106fb5760405162461bcd60e51b815260206004820152602a60248201527f466f726365204c69717569646174696f6e206f662056414920697320616c726560448201526918591e4814185d5cd95960b21b60648201526084015b60405180910390fd5b60cd805460ff1916905560405133907f42388332be4beb2ad2ff83017119b9d702ce7fbaf67e18e53a137508cf967e43905f90a2565b61073961142e565b61074281611488565b50565b61074d61142e565b6107428161154e565b6107946040518060400160405280601c81526020017f72657374726963744c69717569646174696f6e28616464726573732900000000815250611392565b6001600160a01b0381165f90815260cb602052604090205460ff16156107d85760405163404fe9fb60e11b81526001600160a01b03821660048201526024016106f2565b6001600160a01b0381165f81815260cb6020526040808220805460ff19166001179055517f614c47c82976e8f145409efb6366fe2cefa323f389ed9354649262e38dbb35899190a250565b610844604051806060016040528060248152602001612fe360249139611392565b6001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff1661089c5760405163435aad4360e01b81526001600160a01b038084166004830152821660248201526044016106f2565b6001600160a01b038083165f81815260ca6020908152604080832094861680845294909152808220805460ff19169055517f6b0d38eafddac0d37e0aff8f4bbd5f3a3cfe124b8eabea27558bffc931ac05b59190a35050565b6108fd6115b2565b6109068361160b565b6109108333611632565b604051638e8f294b60e01b81526001600160a01b0382811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690638e8f294b90602401606060405180830381865afa158015610978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099c9190612d48565b50509050806109c957604051635a9a1eb960e11b81526001600160a01b03831660048201526024016106f2565b6109d385856116af565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610a17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3b9190612d81565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603610b2557348414610a9f5760405163dd97100160e01b8152600481018590523460248201526044016106f2565b604051635572051560e11b81526001600160a01b03868116600483015284811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063aae40a2a9034906044015f604051808303818588803b158015610b09575f80fd5b505af1158015610b1b573d5f803e3d5ffd5b5050505050610ba1565b3415610b4c5760405163dd97100160e01b81525f60048201523460248201526044016106f2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603610b9557610b9085858561190d565b610ba1565b610ba186868686611abb565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c099190612d81565b90505f610c168383612dac565b90505f80610c25898885611c99565b91509150610c31611e53565b604080518981526001600160a01b038c8116602083015291810184905260608101839052818916918b169033907fdd091524d794aecdb5235b2d816620c2598790835e0f3849808504c2dcb4f1a99060800160405180910390a4505050505050610c9b6001609755565b50505050565b565b60655433906001600160a01b03168114610d115760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106f2565b6107428161202c565b610d586040518060400160405280601f81526020017f616464546f416c6c6f776c69737428616464726573732c616464726573732900815250611392565b6001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff1615610db15760405163071df39160e01b81526001600160a01b038084166004830152821660248201526044016106f2565b6001600160a01b038083165f81815260ca6020908152604080832094861680845294909152808220805460ff19166001179055517ffe40417b78788808c927141f806ef5082e7bba0f7790f2e85b811621a91094339190a35050565b610e4b6040518060400160405280601e81526020017f756e72657374726963744c69717569646174696f6e2861646472657373290000815250611392565b6001600160a01b0381165f90815260cb602052604090205460ff16610e8e57604051633bf9d98960e11b81526001600160a01b03821660048201526024016106f2565b6001600160a01b0381165f81815260cb6020526040808220805460ff19169055517fe1f03de94d16c262d2f0e89a1c42ede8899d540ac992cf53495a5cf29c2896af9190a250565b610f146040518060400160405280601b81526020017f736574547265617375727950657263656e742875696e74323536290000000000815250611392565b610f1d81612045565b60c95460408051918252602082018390527f0e9a1641744b21c49e4183ab9ce941d420e05a05a446c71875fb07814f362c1a910160405180910390a160c955565b5f80610f6b858585611c99565b60408051838152602081018390529294509092507f965c73d6a816dcbe4cc33516168787cb029afb2156ec3372a16e8c6cfbbe6e22910160405180910390a15b935093915050565b610fd460405180606001604052806024815260200161300760249139611392565b5f81116110185760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206368756e6b2073697a6560701b60448201526064016106f2565b60d05460408051918252602082018390527fe5eef53e396f0cb79322e15e72b6c6613ae3e62c9079f5a12f2c410867c28b2c910160405180910390a160d055565b6110976040518060400160405280601981526020017f726573756d65466f7263655641494c6971756964617465282900000000000000815250611392565b60cd5460ff16156110fe5760405162461bcd60e51b815260206004820152602b60248201527f466f726365204c69717569646174696f6e206f662056414920697320616c726560448201526a18591e481c995cdd5b595960aa1b60648201526084016106f2565b60cd805460ff1916600117905560405133907fd4b8f320ada24d048ee6c25c53a31aa20b2ea37fa25542e6e239c80d31d5b60b905f90a2565b5f54610100900460ff161580801561115557505f54600160ff909116105b8061116e5750303b15801561116e57505f5460ff166001145b6111d15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106f2565b5f805460ff1916600117905580156111f2575f805461ff0019166101001790555b6111fd84848461207f565b8015610c9b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b61124f6115b2565b611257611e53565b610ca16001609755565b5f8061126e8585856120c8565b91509150935093915050565b61128261142e565b606580546001600160a01b0383166001600160a01b031990911681179091556112b36033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6113296040518060400160405280601e81526020017f7365744d696e4c6971756964617461626c655641492875696e74323536290000815250611392565b60cc5460408051918252602082018390527f8df018dc5fe866d192a3f4d9f16dbfdb38f58a7470a65b92262ccc008c55fff0910160405180910390a160cc55565b60ce8181548110611379575f80fd5b5f918252602090912001546001600160a01b0316905081565b610102546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906113c59033908690600401612ded565b602060405180830381865afa1580156113e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114049190612e10565b90508061142a57333083604051634a3fa29360e01b81526004016106f293929190612e29565b5050565b6033546001600160a01b03163314610ca15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f2565b6001600160a01b0381166114ec5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016106f2565b61010280546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b6115578161160b565b60cf546040516001600160a01b038084169216907fafec95c8612496c3ecf5dddc71e393528fe29bd145fbaf9c6b496d78d7e2d79b905f90a360cf80546001600160a01b0319166001600160a01b0392909216919091179055565b6002609754036116045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106f2565b6002609755565b6001600160a01b038116610742576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260cb602052604090205460ff16801561167e57506001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff16155b1561142a5760405163074c80eb60e51b81526001600160a01b038084166004830152821660248201526044016106f2565b604051633c617c9160e11b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906378c2f92290602401602060405180830381865afa158015611717573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061173b9190612d81565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e85a29607f000000000000000000000000000000000000000000000000000000000000000060056040518363ffffffff1660e01b81526004016117ad929190612e71565b602060405180830381865afa1580156117c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ec9190612e10565b60405163460d60c560e11b81526001600160a01b0386811660048301529192505f917f00000000000000000000000000000000000000000000000000000000000000001690638c1ac18a90602401602060405180830381865afa158015611855573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118799190612e10565b905080806118845750815b80611892575060cd5460ff16155b8061189e575060cc5483105b806118da57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b156118e6575050505050565b60cc546040516329eb1e8760e01b81526106f2918591600401918252602082015260400190565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cbeb2b286040518163ffffffff1660e01b8152600401602060405180830381865afa15801561196a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198e9190612e9e565b90506119a56001600160a01b0382163330866121c9565b6119d96001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000005f612234565b611a0d6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000085612234565b6040516311b3d5e760e01b81526001600160a01b0385811660048301526024820185905283811660448301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906311b3d5e79060640160408051808303815f875af1158015611a84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa89190612eb9565b509050611ab481612347565b5050505050565b604051638e8f294b60e01b81526001600160a01b0385811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690638e8f294b90602401606060405180830381865afa158015611b23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b479190612d48565b5050905080611b7457604051635a9a1eb960e11b81526001600160a01b03861660048201526024016106f2565b5f856001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd59190612e9e565b90505f611be48233308861236b565b9050611bfa6001600160a01b038316885f612234565b611c0e6001600160a01b0383168883612234565b604051637af1e23160e11b81526001600160a01b038781166004830152602482018390528581166044830152611c90919089169063f5e3c462906064016020604051808303815f875af1158015611c67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8b9190612d81565b612347565b50505050505050565b5f80611ca68585856120c8565b60405163a9059cbb60e01b81523360048201526024810182905291935091506001600160a01b0385169063a9059cbb906044016020604051808303815f875af1158015611cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d199190612e10565b611d455760405163241165bb60e21b8152306004820152336024820152604481018290526064016106f2565b5f82118015611d5b5750611d59848361246f565b155b15611e04575f5b60ce54811015611daa57846001600160a01b031660ce8281548110611d8957611d89612edb565b5f918252602090912001546001600160a01b031614611daa57600101611d62565b60ce548103611dfe5760ce80546001810182555f919091527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b0387161790555b50610fab565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603611e4a57611e456124fa565b610fab565b610fab846126ae565b60ce5460d0545f90821015611e685781611e6c565b60d0545b9050805b8015612020575f60ce611e84600184612dac565b81548110611e9457611e94612edb565b5f9182526020822001546040516370a0823160e01b81523060048201526001600160a01b03909116925082906370a0823190602401602060405180830381865afa158015611ee4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f089190612d81565b9050611f14828261246f565b15612016577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611f5f57611f5a6124fa565b611f68565b611f68826126ae565b60ce8054611f7890600190612dac565b81548110611f8857611f88612edb565b5f918252602090912001546001600160a01b031660ce611fa9600186612dac565b81548110611fb957611fb9612edb565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060ce805480611ff557611ff5612eef565b5f8281526020902081015f1990810180546001600160a01b03191690550190555b50505f1901611e70565b505050565b6001609755565b606580546001600160a01b03191690556107428161285e565b670de0b6b3a764000081111561074257604051635659cb3b60e01b8152670de0b6b3a76400006004820152602481018290526044016106f2565b5f54610100900460ff166120a55760405162461bcd60e51b81526004016106f290612f03565b6120ad6128af565b6120b56128dd565b6120bf838261290b565b61202082612948565b60405163afd3783b60e01b81526001600160a01b03848116600483015283811660248301525f91829182917f00000000000000000000000000000000000000000000000000000000000000009091169063afd3783b90604401602060405180830381865afa15801561213c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121609190612d81565b90505f612175670de0b6b3a764000083612dac565b90505f826121838388612f4e565b61218d9190612f65565b9050670de0b6b3a764000060c954826121a69190612f4e565b6121b09190612f65565b94506121bc8587612dac565b9350505050935093915050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c9b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261296e565b8015806122ac5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612286573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122aa9190612d81565b155b6123175760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016106f2565b6040516001600160a01b03831660248201526044810182905261202090849063095ea7b360e01b906064016121fd565b8061234f5750565b60405163125a96ab60e01b8152600481018290526024016106f2565b6040516370a0823160e01b81526001600160a01b0383811660048301525f9182918716906370a0823190602401602060405180830381865afa1580156123b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d79190612d81565b90506123ee6001600160a01b0387168686866121c9565b6040516370a0823160e01b81526001600160a01b0385811660048301528291908816906370a0823190602401602060405180830381865afa158015612435573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124599190612d81565b6124639190612dac565b9150505b949350505050565b60405163db006a7560e01b8152600481018290525f906001600160a01b0384169063db006a75906024016020604051808303815f875af19250505080156124d3575060408051601f3d908101601f191682019092526124d091810190612d81565b60015b6124de57505f6124f4565b805f036124ef5760019150506124f4565b5f9150505b92915050565b5f4790507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612557575f80fd5b505af1158015612569573d5f803e3d5ffd5b505060cf546125a993506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116935016905083612a41565b60cf546040516305bebb3b60e21b81526001600160a01b03909116906316faecec9061261e907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600190600401612f84565b5f604051808303815f87803b158015612635575f80fd5b505af1158015612647573d5f803e3d5ffd5b50506040518381526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692503391507fb68163184d017d69dff908f587b51f68dc2689426509efd546fbf77b518cc8769060200160405180910390a350565b5f816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061270f9190612e9e565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612756573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061277a9190612d81565b60cf54909150612797906001600160a01b03848116911683612a41565b60cf546040516305bebb3b60e21b81526001600160a01b03909116906316faecec906127ec907f0000000000000000000000000000000000000000000000000000000000000000908690600190600401612f84565b5f604051808303815f87803b158015612803575f80fd5b505af1158015612815573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507fb68163184d017d69dff908f587b51f68dc2689426509efd546fbf77b518cc8769060200160405180910390a3505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166128d55760405162461bcd60e51b81526004016106f290612f03565b610ca1612a71565b5f54610100900460ff166129035760405162461bcd60e51b81526004016106f290612f03565b610ca1612aa0565b5f54610100900460ff166129315760405162461bcd60e51b81526004016106f290612f03565b61293a82612045565b60c982905561142a8161154e565b5f54610100900460ff166107395760405162461bcd60e51b81526004016106f290612f03565b5f6129c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ac69092919063ffffffff16565b905080515f14806129e25750808060200190518101906129e29190612e10565b6120205760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106f2565b6040516001600160a01b03831660248201526044810182905261202090849063a9059cbb60e01b906064016121fd565b5f54610100900460ff16612a975760405162461bcd60e51b81526004016106f290612f03565b610ca13361202c565b5f54610100900460ff166120255760405162461bcd60e51b81526004016106f290612f03565b606061246784845f85855f80866001600160a01b03168587604051612aeb9190612fba565b5f6040518083038185875af1925050503d805f8114612b25576040519150601f19603f3d011682016040523d82523d5f602084013e612b2a565b606091505b5091509150612b3b87838387612b46565b979650505050505050565b60608315612bb45782515f03612bad576001600160a01b0385163b612bad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f2565b5081612467565b6124678383815115612bc95781518083602001fd5b8060405162461bcd60e51b81526004016106f29190612fd0565b6001600160a01b0381168114610742575f80fd5b5f60208284031215612c07575f80fd5b8135612c1281612be3565b9392505050565b5f8060408385031215612c2a575f80fd5b8235612c3581612be3565b91506020830135612c4581612be3565b809150509250929050565b5f805f8060808587031215612c63575f80fd5b8435612c6e81612be3565b93506020850135612c7e81612be3565b9250604085013591506060850135612c9581612be3565b939692955090935050565b5f60208284031215612cb0575f80fd5b5035919050565b5f805f60608486031215612cc9575f80fd5b8335612cd481612be3565b92506020840135612ce481612be3565b929592945050506040919091013590565b5f805f60608486031215612d07575f80fd5b833592506020840135612d1981612be3565b91506040840135612d2981612be3565b809150509250925092565b80518015158114612d43575f80fd5b919050565b5f805f60608486031215612d5a575f80fd5b612d6384612d34565b925060208401519150612d7860408501612d34565b90509250925092565b5f60208284031215612d91575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156124f4576124f4612d98565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061246790830184612dbf565b5f60208284031215612e20575f80fd5b612c1282612d34565b6001600160a01b038481168252831660208201526060604082018190525f90612e5490830184612dbf565b95945050505050565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160098310612e9157612e91612e5d565b8260208301529392505050565b5f60208284031215612eae575f80fd5b8151612c1281612be3565b5f8060408385031215612eca575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80820281158282048414176124f4576124f4612d98565b5f82612f7f57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b038481168252831660208201526060810160028310612fac57612fac612e5d565b826040830152949350505050565b5f82518060208501845e5f920191825250919050565b602081525f612c126020830184612dbf56fe72656d6f766546726f6d416c6c6f776c69737428616464726573732c616464726573732973657450656e64696e6752656465656d4368756e6b4c656e6774682875696e7432353629a2646970667358221220c00005e867c54cde22f21d659c896ec916281b5266414613f38292f8d51a9b1564736f6c63430008190033",
1048
- "deployedBytecode": "0x6080604052600436106101e9575f3560e01c80638da5cb5b11610108578063b4a0bdf31161009d578063e30c39781161006d578063e30c3978146105ba578063e9a44fd9146105d7578063f2fde38b146105f6578063f52421b314610615578063f7dcd96e14610634575f80fd5b8063b4a0bdf314610536578063b8332db714610554578063d02eb3f414610568578063e1e8ae6a1461059b575f80fd5b8063a093796a116100d8578063a093796a146104b6578063b09c7742146104d5578063b26461de146104e9578063b4988fd014610517575f80fd5b80638da5cb5b1461041d5780638e3525fc1461043a5780639254f5e51461044f5780639eb8a17914610482575f80fd5b80635fe3b5671161017e5780637debe3fe1161014e5780637debe3fe1461039d5780638722ddf2146103bc5780638765adcb146103df57806389a2bc25146103fe575f80fd5b80635fe3b5671461033857806364fd70781461036b578063715018a61461037e57806379ba509714610389575f80fd5b806336eab4ae116101b957806336eab4ae1461026757806344b3716a1461029557806347a6a971146102ce5780635ba3792d146102ed575f80fd5b80630d060ea8146101f45780630e32cb861461020a578063107568df1461022957806311ec4b7a14610248575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50610208610653565b005b348015610215575f80fd5b50610208610224366004612bf7565b610731565b348015610234575f80fd5b50610208610243366004612bf7565b610745565b348015610253575f80fd5b50610208610262366004612bf7565b610756565b348015610272575f80fd5b5060cd546102809060ff1681565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b506102806102af366004612c19565b60ca60209081525f928352604080842090915290825290205460ff1681565b3480156102d9575f80fd5b506102086102e8366004612c19565b610823565b3480156102f8575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161028c565b348015610343575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b610208610379366004612c50565b6108f5565b348015610208575f80fd5b348015610394575f80fd5b50610208610ca3565b3480156103a8575f80fd5b506102086103b7366004612c19565b610d1a565b3480156103c7575f80fd5b506103d160cc5481565b60405190815260200161028c565b3480156103ea575f80fd5b506102086103f9366004612bf7565b610e0d565b348015610409575f80fd5b50610208610418366004612ca0565b610ed6565b348015610428575f80fd5b506033546001600160a01b0316610320565b348015610445575f80fd5b506103d160c95481565b34801561045a575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b34801561048d575f80fd5b506104a161049c366004612cb7565b610f5e565b6040805192835260208301919091520161028c565b3480156104c1575f80fd5b506102086104d0366004612ca0565b610fb3565b3480156104e0575f80fd5b50610208611059565b3480156104f4575f80fd5b50610280610503366004612bf7565b60cb6020525f908152604090205460ff1681565b348015610522575f80fd5b50610208610531366004612cf5565b611137565b348015610541575f80fd5b50610102546001600160a01b0316610320565b34801561055f575f80fd5b50610208611247565b348015610573575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a6575f80fd5b506104a16105b5366004612cb7565b611261565b3480156105c5575f80fd5b506065546001600160a01b0316610320565b3480156105e2575f80fd5b5060cf54610320906001600160a01b031681565b348015610601575f80fd5b50610208610610366004612bf7565b61127a565b348015610620575f80fd5b5061020861062f366004612ca0565b6112eb565b34801561063f575f80fd5b5061032061064e366004612ca0565b61136a565b6106916040518060400160405280601881526020017f7061757365466f7263655641494c697175696461746528290000000000000000815250611392565b60cd5460ff166106fb5760405162461bcd60e51b815260206004820152602a60248201527f466f726365204c69717569646174696f6e206f662056414920697320616c726560448201526918591e4814185d5cd95960b21b60648201526084015b60405180910390fd5b60cd805460ff1916905560405133907f42388332be4beb2ad2ff83017119b9d702ce7fbaf67e18e53a137508cf967e43905f90a2565b61073961142e565b61074281611488565b50565b61074d61142e565b6107428161154e565b6107946040518060400160405280601c81526020017f72657374726963744c69717569646174696f6e28616464726573732900000000815250611392565b6001600160a01b0381165f90815260cb602052604090205460ff16156107d85760405163404fe9fb60e11b81526001600160a01b03821660048201526024016106f2565b6001600160a01b0381165f81815260cb6020526040808220805460ff19166001179055517f614c47c82976e8f145409efb6366fe2cefa323f389ed9354649262e38dbb35899190a250565b610844604051806060016040528060248152602001612fe360249139611392565b6001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff1661089c5760405163435aad4360e01b81526001600160a01b038084166004830152821660248201526044016106f2565b6001600160a01b038083165f81815260ca6020908152604080832094861680845294909152808220805460ff19169055517f6b0d38eafddac0d37e0aff8f4bbd5f3a3cfe124b8eabea27558bffc931ac05b59190a35050565b6108fd6115b2565b6109068361160b565b6109108333611632565b604051638e8f294b60e01b81526001600160a01b0382811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690638e8f294b90602401606060405180830381865afa158015610978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099c9190612d48565b50509050806109c957604051635a9a1eb960e11b81526001600160a01b03831660048201526024016106f2565b6109d385856116af565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610a17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3b9190612d81565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603610b2557348414610a9f5760405163dd97100160e01b8152600481018590523460248201526044016106f2565b604051635572051560e11b81526001600160a01b03868116600483015284811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063aae40a2a9034906044015f604051808303818588803b158015610b09575f80fd5b505af1158015610b1b573d5f803e3d5ffd5b5050505050610ba1565b3415610b4c5760405163dd97100160e01b81525f60048201523460248201526044016106f2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603610b9557610b9085858561190d565b610ba1565b610ba186868686611abb565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c099190612d81565b90505f610c168383612dac565b90505f80610c25898885611c99565b91509150610c31611e53565b604080518981526001600160a01b038c8116602083015291810184905260608101839052818916918b169033907fdd091524d794aecdb5235b2d816620c2598790835e0f3849808504c2dcb4f1a99060800160405180910390a4505050505050610c9b6001609755565b50505050565b565b60655433906001600160a01b03168114610d115760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106f2565b6107428161202c565b610d586040518060400160405280601f81526020017f616464546f416c6c6f776c69737428616464726573732c616464726573732900815250611392565b6001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff1615610db15760405163071df39160e01b81526001600160a01b038084166004830152821660248201526044016106f2565b6001600160a01b038083165f81815260ca6020908152604080832094861680845294909152808220805460ff19166001179055517ffe40417b78788808c927141f806ef5082e7bba0f7790f2e85b811621a91094339190a35050565b610e4b6040518060400160405280601e81526020017f756e72657374726963744c69717569646174696f6e2861646472657373290000815250611392565b6001600160a01b0381165f90815260cb602052604090205460ff16610e8e57604051633bf9d98960e11b81526001600160a01b03821660048201526024016106f2565b6001600160a01b0381165f81815260cb6020526040808220805460ff19169055517fe1f03de94d16c262d2f0e89a1c42ede8899d540ac992cf53495a5cf29c2896af9190a250565b610f146040518060400160405280601b81526020017f736574547265617375727950657263656e742875696e74323536290000000000815250611392565b610f1d81612045565b60c95460408051918252602082018390527f0e9a1641744b21c49e4183ab9ce941d420e05a05a446c71875fb07814f362c1a910160405180910390a160c955565b5f80610f6b858585611c99565b60408051838152602081018390529294509092507f965c73d6a816dcbe4cc33516168787cb029afb2156ec3372a16e8c6cfbbe6e22910160405180910390a15b935093915050565b610fd460405180606001604052806024815260200161300760249139611392565b5f81116110185760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206368756e6b2073697a6560701b60448201526064016106f2565b60d05460408051918252602082018390527fe5eef53e396f0cb79322e15e72b6c6613ae3e62c9079f5a12f2c410867c28b2c910160405180910390a160d055565b6110976040518060400160405280601981526020017f726573756d65466f7263655641494c6971756964617465282900000000000000815250611392565b60cd5460ff16156110fe5760405162461bcd60e51b815260206004820152602b60248201527f466f726365204c69717569646174696f6e206f662056414920697320616c726560448201526a18591e481c995cdd5b595960aa1b60648201526084016106f2565b60cd805460ff1916600117905560405133907fd4b8f320ada24d048ee6c25c53a31aa20b2ea37fa25542e6e239c80d31d5b60b905f90a2565b5f54610100900460ff161580801561115557505f54600160ff909116105b8061116e5750303b15801561116e57505f5460ff166001145b6111d15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106f2565b5f805460ff1916600117905580156111f2575f805461ff0019166101001790555b6111fd84848461207f565b8015610c9b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b61124f6115b2565b611257611e53565b610ca16001609755565b5f8061126e8585856120c8565b91509150935093915050565b61128261142e565b606580546001600160a01b0383166001600160a01b031990911681179091556112b36033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6113296040518060400160405280601e81526020017f7365744d696e4c6971756964617461626c655641492875696e74323536290000815250611392565b60cc5460408051918252602082018390527f8df018dc5fe866d192a3f4d9f16dbfdb38f58a7470a65b92262ccc008c55fff0910160405180910390a160cc55565b60ce8181548110611379575f80fd5b5f918252602090912001546001600160a01b0316905081565b610102546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906113c59033908690600401612ded565b602060405180830381865afa1580156113e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114049190612e10565b90508061142a57333083604051634a3fa29360e01b81526004016106f293929190612e29565b5050565b6033546001600160a01b03163314610ca15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f2565b6001600160a01b0381166114ec5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016106f2565b61010280546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b6115578161160b565b60cf546040516001600160a01b038084169216907fafec95c8612496c3ecf5dddc71e393528fe29bd145fbaf9c6b496d78d7e2d79b905f90a360cf80546001600160a01b0319166001600160a01b0392909216919091179055565b6002609754036116045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106f2565b6002609755565b6001600160a01b038116610742576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260cb602052604090205460ff16801561167e57506001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff16155b1561142a5760405163074c80eb60e51b81526001600160a01b038084166004830152821660248201526044016106f2565b604051633c617c9160e11b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906378c2f92290602401602060405180830381865afa158015611717573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061173b9190612d81565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e85a29607f000000000000000000000000000000000000000000000000000000000000000060056040518363ffffffff1660e01b81526004016117ad929190612e71565b602060405180830381865afa1580156117c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ec9190612e10565b60405163460d60c560e11b81526001600160a01b0386811660048301529192505f917f00000000000000000000000000000000000000000000000000000000000000001690638c1ac18a90602401602060405180830381865afa158015611855573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118799190612e10565b905080806118845750815b80611892575060cd5460ff16155b8061189e575060cc5483105b806118da57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b156118e6575050505050565b60cc546040516329eb1e8760e01b81526106f2918591600401918252602082015260400190565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cbeb2b286040518163ffffffff1660e01b8152600401602060405180830381865afa15801561196a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198e9190612e9e565b90506119a56001600160a01b0382163330866121c9565b6119d96001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000005f612234565b611a0d6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000085612234565b6040516311b3d5e760e01b81526001600160a01b0385811660048301526024820185905283811660448301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906311b3d5e79060640160408051808303815f875af1158015611a84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa89190612eb9565b509050611ab481612347565b5050505050565b604051638e8f294b60e01b81526001600160a01b0385811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690638e8f294b90602401606060405180830381865afa158015611b23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b479190612d48565b5050905080611b7457604051635a9a1eb960e11b81526001600160a01b03861660048201526024016106f2565b5f856001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd59190612e9e565b90505f611be48233308861236b565b9050611bfa6001600160a01b038316885f612234565b611c0e6001600160a01b0383168883612234565b604051637af1e23160e11b81526001600160a01b038781166004830152602482018390528581166044830152611c90919089169063f5e3c462906064016020604051808303815f875af1158015611c67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8b9190612d81565b612347565b50505050505050565b5f80611ca68585856120c8565b60405163a9059cbb60e01b81523360048201526024810182905291935091506001600160a01b0385169063a9059cbb906044016020604051808303815f875af1158015611cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d199190612e10565b611d455760405163241165bb60e21b8152306004820152336024820152604481018290526064016106f2565b5f82118015611d5b5750611d59848361246f565b155b15611e04575f5b60ce54811015611daa57846001600160a01b031660ce8281548110611d8957611d89612edb565b5f918252602090912001546001600160a01b031614611daa57600101611d62565b60ce548103611dfe5760ce80546001810182555f919091527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b0387161790555b50610fab565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603611e4a57611e456124fa565b610fab565b610fab846126ae565b60ce5460d0545f90821015611e685781611e6c565b60d0545b9050805b8015612020575f60ce611e84600184612dac565b81548110611e9457611e94612edb565b5f9182526020822001546040516370a0823160e01b81523060048201526001600160a01b03909116925082906370a0823190602401602060405180830381865afa158015611ee4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f089190612d81565b9050611f14828261246f565b15612016577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611f5f57611f5a6124fa565b611f68565b611f68826126ae565b60ce8054611f7890600190612dac565b81548110611f8857611f88612edb565b5f918252602090912001546001600160a01b031660ce611fa9600186612dac565b81548110611fb957611fb9612edb565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060ce805480611ff557611ff5612eef565b5f8281526020902081015f1990810180546001600160a01b03191690550190555b50505f1901611e70565b505050565b6001609755565b606580546001600160a01b03191690556107428161285e565b670de0b6b3a764000081111561074257604051635659cb3b60e01b8152670de0b6b3a76400006004820152602481018290526044016106f2565b5f54610100900460ff166120a55760405162461bcd60e51b81526004016106f290612f03565b6120ad6128af565b6120b56128dd565b6120bf838261290b565b61202082612948565b60405163afd3783b60e01b81526001600160a01b03848116600483015283811660248301525f91829182917f00000000000000000000000000000000000000000000000000000000000000009091169063afd3783b90604401602060405180830381865afa15801561213c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121609190612d81565b90505f612175670de0b6b3a764000083612dac565b90505f826121838388612f4e565b61218d9190612f65565b9050670de0b6b3a764000060c954826121a69190612f4e565b6121b09190612f65565b94506121bc8587612dac565b9350505050935093915050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c9b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261296e565b8015806122ac5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612286573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122aa9190612d81565b155b6123175760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016106f2565b6040516001600160a01b03831660248201526044810182905261202090849063095ea7b360e01b906064016121fd565b8061234f5750565b60405163125a96ab60e01b8152600481018290526024016106f2565b6040516370a0823160e01b81526001600160a01b0383811660048301525f9182918716906370a0823190602401602060405180830381865afa1580156123b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d79190612d81565b90506123ee6001600160a01b0387168686866121c9565b6040516370a0823160e01b81526001600160a01b0385811660048301528291908816906370a0823190602401602060405180830381865afa158015612435573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124599190612d81565b6124639190612dac565b9150505b949350505050565b60405163db006a7560e01b8152600481018290525f906001600160a01b0384169063db006a75906024016020604051808303815f875af19250505080156124d3575060408051601f3d908101601f191682019092526124d091810190612d81565b60015b6124de57505f6124f4565b805f036124ef5760019150506124f4565b5f9150505b92915050565b5f4790507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612557575f80fd5b505af1158015612569573d5f803e3d5ffd5b505060cf546125a993506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116935016905083612a41565b60cf546040516305bebb3b60e21b81526001600160a01b03909116906316faecec9061261e907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600190600401612f84565b5f604051808303815f87803b158015612635575f80fd5b505af1158015612647573d5f803e3d5ffd5b50506040518381526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692503391507fb68163184d017d69dff908f587b51f68dc2689426509efd546fbf77b518cc8769060200160405180910390a350565b5f816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061270f9190612e9e565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612756573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061277a9190612d81565b60cf54909150612797906001600160a01b03848116911683612a41565b60cf546040516305bebb3b60e21b81526001600160a01b03909116906316faecec906127ec907f0000000000000000000000000000000000000000000000000000000000000000908690600190600401612f84565b5f604051808303815f87803b158015612803575f80fd5b505af1158015612815573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507fb68163184d017d69dff908f587b51f68dc2689426509efd546fbf77b518cc8769060200160405180910390a3505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166128d55760405162461bcd60e51b81526004016106f290612f03565b610ca1612a71565b5f54610100900460ff166129035760405162461bcd60e51b81526004016106f290612f03565b610ca1612aa0565b5f54610100900460ff166129315760405162461bcd60e51b81526004016106f290612f03565b61293a82612045565b60c982905561142a8161154e565b5f54610100900460ff166107395760405162461bcd60e51b81526004016106f290612f03565b5f6129c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ac69092919063ffffffff16565b905080515f14806129e25750808060200190518101906129e29190612e10565b6120205760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106f2565b6040516001600160a01b03831660248201526044810182905261202090849063a9059cbb60e01b906064016121fd565b5f54610100900460ff16612a975760405162461bcd60e51b81526004016106f290612f03565b610ca13361202c565b5f54610100900460ff166120255760405162461bcd60e51b81526004016106f290612f03565b606061246784845f85855f80866001600160a01b03168587604051612aeb9190612fba565b5f6040518083038185875af1925050503d805f8114612b25576040519150601f19603f3d011682016040523d82523d5f602084013e612b2a565b606091505b5091509150612b3b87838387612b46565b979650505050505050565b60608315612bb45782515f03612bad576001600160a01b0385163b612bad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f2565b5081612467565b6124678383815115612bc95781518083602001fd5b8060405162461bcd60e51b81526004016106f29190612fd0565b6001600160a01b0381168114610742575f80fd5b5f60208284031215612c07575f80fd5b8135612c1281612be3565b9392505050565b5f8060408385031215612c2a575f80fd5b8235612c3581612be3565b91506020830135612c4581612be3565b809150509250929050565b5f805f8060808587031215612c63575f80fd5b8435612c6e81612be3565b93506020850135612c7e81612be3565b9250604085013591506060850135612c9581612be3565b939692955090935050565b5f60208284031215612cb0575f80fd5b5035919050565b5f805f60608486031215612cc9575f80fd5b8335612cd481612be3565b92506020840135612ce481612be3565b929592945050506040919091013590565b5f805f60608486031215612d07575f80fd5b833592506020840135612d1981612be3565b91506040840135612d2981612be3565b809150509250925092565b80518015158114612d43575f80fd5b919050565b5f805f60608486031215612d5a575f80fd5b612d6384612d34565b925060208401519150612d7860408501612d34565b90509250925092565b5f60208284031215612d91575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156124f4576124f4612d98565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061246790830184612dbf565b5f60208284031215612e20575f80fd5b612c1282612d34565b6001600160a01b038481168252831660208201526060604082018190525f90612e5490830184612dbf565b95945050505050565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160098310612e9157612e91612e5d565b8260208301529392505050565b5f60208284031215612eae575f80fd5b8151612c1281612be3565b5f8060408385031215612eca575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80820281158282048414176124f4576124f4612d98565b5f82612f7f57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b038481168252831660208201526060810160028310612fac57612fac612e5d565b826040830152949350505050565b5f82518060208501845e5f920191825250919050565b602081525f612c126020830184612dbf56fe72656d6f766546726f6d416c6c6f776c69737428616464726573732c616464726573732973657450656e64696e6752656465656d4368756e6b4c656e6774682875696e7432353629a2646970667358221220c00005e867c54cde22f21d659c896ec916281b5266414613f38292f8d51a9b1564736f6c63430008190033",
1047
+ "bytecode": "0x610100604052348015610010575f80fd5b5060405161337e38038061337e83398101604081905261002f916101de565b82828261003b826100e4565b610044836100e4565b61004d816100e4565b6001600160a01b0380831660805281811660e052831660a081905260408051639254f5e560e01b81529051639254f5e5916004808201926020929091908290030181865afa1580156100a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100c59190610228565b6001600160a01b031660c0526100d961010e565b50505050505061024a565b6001600160a01b03811661010b576040516342bcdf7f60e11b815260040160405180910390fd5b50565b5f54610100900460ff16156101795760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146101c8575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461010b575f80fd5b5f805f606084860312156101f0575f80fd5b83516101fb816101ca565b602085015190935061020c816101ca565b604085015190925061021d816101ca565b809150509250925092565b5f60208284031215610238575f80fd5b8151610243816101ca565b9392505050565b60805160a05160c05160e05161306061031e5f395f8181610579015281816125000152818161257d015281816125f3015261265901525f818161046001528181610b4e015281816116d00152818161176f015281816118a601528181611910015281816119b4015281816119e80152611a3d01525f818161034901528181610931015281816117400152818161181001528181611adc015281816120f5015281816125d101526127bf01525f81816102fe01528181610a3f01528181610ac601528181611e060152611f1b01526130605ff3fe6080604052600436106101e9575f3560e01c80638da5cb5b11610108578063b4a0bdf31161009d578063e30c39781161006d578063e30c3978146105ba578063e9a44fd9146105d7578063f2fde38b146105f6578063f52421b314610615578063f7dcd96e14610634575f80fd5b8063b4a0bdf314610536578063b8332db714610554578063d02eb3f414610568578063e1e8ae6a1461059b575f80fd5b8063a093796a116100d8578063a093796a146104b6578063b09c7742146104d5578063b26461de146104e9578063b4988fd014610517575f80fd5b80638da5cb5b1461041d5780638e3525fc1461043a5780639254f5e51461044f5780639eb8a17914610482575f80fd5b80635fe3b5671161017e5780637debe3fe1161014e5780637debe3fe1461039d5780638722ddf2146103bc5780638765adcb146103df57806389a2bc25146103fe575f80fd5b80635fe3b5671461033857806364fd70781461036b578063715018a61461037e57806379ba509714610389575f80fd5b806336eab4ae116101b957806336eab4ae1461026757806344b3716a1461029557806347a6a971146102ce5780635ba3792d146102ed575f80fd5b80630d060ea8146101f45780630e32cb861461020a578063107568df1461022957806311ec4b7a14610248575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50610208610653565b005b348015610215575f80fd5b50610208610224366004612bf7565b610731565b348015610234575f80fd5b50610208610243366004612bf7565b610745565b348015610253575f80fd5b50610208610262366004612bf7565b610756565b348015610272575f80fd5b5060cd546102809060ff1681565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b506102806102af366004612c19565b60ca60209081525f928352604080842090915290825290205460ff1681565b3480156102d9575f80fd5b506102086102e8366004612c19565b610823565b3480156102f8575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161028c565b348015610343575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b610208610379366004612c50565b6108f5565b348015610208575f80fd5b348015610394575f80fd5b50610208610ca3565b3480156103a8575f80fd5b506102086103b7366004612c19565b610d1a565b3480156103c7575f80fd5b506103d160cc5481565b60405190815260200161028c565b3480156103ea575f80fd5b506102086103f9366004612bf7565b610e0d565b348015610409575f80fd5b50610208610418366004612ca0565b610ed6565b348015610428575f80fd5b506033546001600160a01b0316610320565b348015610445575f80fd5b506103d160c95481565b34801561045a575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b34801561048d575f80fd5b506104a161049c366004612cb7565b610f5e565b6040805192835260208301919091520161028c565b3480156104c1575f80fd5b506102086104d0366004612ca0565b610fb3565b3480156104e0575f80fd5b50610208611059565b3480156104f4575f80fd5b50610280610503366004612bf7565b60cb6020525f908152604090205460ff1681565b348015610522575f80fd5b50610208610531366004612cf5565b611137565b348015610541575f80fd5b50610102546001600160a01b0316610320565b34801561055f575f80fd5b50610208611247565b348015610573575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a6575f80fd5b506104a16105b5366004612cb7565b611261565b3480156105c5575f80fd5b506065546001600160a01b0316610320565b3480156105e2575f80fd5b5060cf54610320906001600160a01b031681565b348015610601575f80fd5b50610208610610366004612bf7565b61127a565b348015610620575f80fd5b5061020861062f366004612ca0565b6112eb565b34801561063f575f80fd5b5061032061064e366004612ca0565b61136a565b6106916040518060400160405280601881526020017f7061757365466f7263655641494c697175696461746528290000000000000000815250611392565b60cd5460ff166106fb5760405162461bcd60e51b815260206004820152602a60248201527f466f726365204c69717569646174696f6e206f662056414920697320616c726560448201526918591e4814185d5cd95960b21b60648201526084015b60405180910390fd5b60cd805460ff1916905560405133907f42388332be4beb2ad2ff83017119b9d702ce7fbaf67e18e53a137508cf967e43905f90a2565b61073961142e565b61074281611488565b50565b61074d61142e565b6107428161154e565b6107946040518060400160405280601c81526020017f72657374726963744c69717569646174696f6e28616464726573732900000000815250611392565b6001600160a01b0381165f90815260cb602052604090205460ff16156107d85760405163404fe9fb60e11b81526001600160a01b03821660048201526024016106f2565b6001600160a01b0381165f81815260cb6020526040808220805460ff19166001179055517f614c47c82976e8f145409efb6366fe2cefa323f389ed9354649262e38dbb35899190a250565b610844604051806060016040528060248152602001612fe360249139611392565b6001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff1661089c5760405163435aad4360e01b81526001600160a01b038084166004830152821660248201526044016106f2565b6001600160a01b038083165f81815260ca6020908152604080832094861680845294909152808220805460ff19169055517f6b0d38eafddac0d37e0aff8f4bbd5f3a3cfe124b8eabea27558bffc931ac05b59190a35050565b6108fd6115b2565b6109068361160b565b6109108333611632565b604051638e8f294b60e01b81526001600160a01b0382811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690638e8f294b90602401606060405180830381865afa158015610978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099c9190612d48565b50509050806109c957604051635a9a1eb960e11b81526001600160a01b03831660048201526024016106f2565b6109d385856116af565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610a17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3b9190612d81565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603610b2557348414610a9f5760405163dd97100160e01b8152600481018590523460248201526044016106f2565b604051635572051560e11b81526001600160a01b03868116600483015284811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063aae40a2a9034906044015f604051808303818588803b158015610b09575f80fd5b505af1158015610b1b573d5f803e3d5ffd5b5050505050610ba1565b3415610b4c5760405163dd97100160e01b81525f60048201523460248201526044016106f2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603610b9557610b9085858561190d565b610ba1565b610ba186868686611abb565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c099190612d81565b90505f610c168383612dac565b90505f80610c25898885611c99565b91509150610c31611e53565b604080518981526001600160a01b038c8116602083015291810184905260608101839052818916918b169033907fdd091524d794aecdb5235b2d816620c2598790835e0f3849808504c2dcb4f1a99060800160405180910390a4505050505050610c9b6001609755565b50505050565b565b60655433906001600160a01b03168114610d115760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106f2565b6107428161202c565b610d586040518060400160405280601f81526020017f616464546f416c6c6f776c69737428616464726573732c616464726573732900815250611392565b6001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff1615610db15760405163071df39160e01b81526001600160a01b038084166004830152821660248201526044016106f2565b6001600160a01b038083165f81815260ca6020908152604080832094861680845294909152808220805460ff19166001179055517ffe40417b78788808c927141f806ef5082e7bba0f7790f2e85b811621a91094339190a35050565b610e4b6040518060400160405280601e81526020017f756e72657374726963744c69717569646174696f6e2861646472657373290000815250611392565b6001600160a01b0381165f90815260cb602052604090205460ff16610e8e57604051633bf9d98960e11b81526001600160a01b03821660048201526024016106f2565b6001600160a01b0381165f81815260cb6020526040808220805460ff19169055517fe1f03de94d16c262d2f0e89a1c42ede8899d540ac992cf53495a5cf29c2896af9190a250565b610f146040518060400160405280601b81526020017f736574547265617375727950657263656e742875696e74323536290000000000815250611392565b610f1d81612045565b60c95460408051918252602082018390527f0e9a1641744b21c49e4183ab9ce941d420e05a05a446c71875fb07814f362c1a910160405180910390a160c955565b5f80610f6b858585611c99565b60408051838152602081018390529294509092507f965c73d6a816dcbe4cc33516168787cb029afb2156ec3372a16e8c6cfbbe6e22910160405180910390a15b935093915050565b610fd460405180606001604052806024815260200161300760249139611392565b5f81116110185760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206368756e6b2073697a6560701b60448201526064016106f2565b60d05460408051918252602082018390527fe5eef53e396f0cb79322e15e72b6c6613ae3e62c9079f5a12f2c410867c28b2c910160405180910390a160d055565b6110976040518060400160405280601981526020017f726573756d65466f7263655641494c6971756964617465282900000000000000815250611392565b60cd5460ff16156110fe5760405162461bcd60e51b815260206004820152602b60248201527f466f726365204c69717569646174696f6e206f662056414920697320616c726560448201526a18591e481c995cdd5b595960aa1b60648201526084016106f2565b60cd805460ff1916600117905560405133907fd4b8f320ada24d048ee6c25c53a31aa20b2ea37fa25542e6e239c80d31d5b60b905f90a2565b5f54610100900460ff161580801561115557505f54600160ff909116105b8061116e5750303b15801561116e57505f5460ff166001145b6111d15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106f2565b5f805460ff1916600117905580156111f2575f805461ff0019166101001790555b6111fd84848461207f565b8015610c9b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b61124f6115b2565b611257611e53565b610ca16001609755565b5f8061126e8585856120c8565b91509150935093915050565b61128261142e565b606580546001600160a01b0383166001600160a01b031990911681179091556112b36033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6113296040518060400160405280601e81526020017f7365744d696e4c6971756964617461626c655641492875696e74323536290000815250611392565b60cc5460408051918252602082018390527f8df018dc5fe866d192a3f4d9f16dbfdb38f58a7470a65b92262ccc008c55fff0910160405180910390a160cc55565b60ce8181548110611379575f80fd5b5f918252602090912001546001600160a01b0316905081565b610102546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906113c59033908690600401612ded565b602060405180830381865afa1580156113e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114049190612e10565b90508061142a57333083604051634a3fa29360e01b81526004016106f293929190612e29565b5050565b6033546001600160a01b03163314610ca15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f2565b6001600160a01b0381166114ec5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016106f2565b61010280546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b6115578161160b565b60cf546040516001600160a01b038084169216907fafec95c8612496c3ecf5dddc71e393528fe29bd145fbaf9c6b496d78d7e2d79b905f90a360cf80546001600160a01b0319166001600160a01b0392909216919091179055565b6002609754036116045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106f2565b6002609755565b6001600160a01b038116610742576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260cb602052604090205460ff16801561167e57506001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff16155b1561142a5760405163074c80eb60e51b81526001600160a01b038084166004830152821660248201526044016106f2565b604051633c617c9160e11b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906378c2f92290602401602060405180830381865afa158015611717573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061173b9190612d81565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e85a29607f000000000000000000000000000000000000000000000000000000000000000060056040518363ffffffff1660e01b81526004016117ad929190612e71565b602060405180830381865afa1580156117c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ec9190612e10565b60405163460d60c560e11b81526001600160a01b0386811660048301529192505f917f00000000000000000000000000000000000000000000000000000000000000001690638c1ac18a90602401602060405180830381865afa158015611855573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118799190612e10565b905080806118845750815b80611892575060cd5460ff16155b8061189e575060cc5483105b806118da57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b156118e6575050505050565b60cc546040516329eb1e8760e01b81526106f2918591600401918252602082015260400190565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cbeb2b286040518163ffffffff1660e01b8152600401602060405180830381865afa15801561196a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198e9190612e9e565b90506119a56001600160a01b0382163330866121c9565b6119d96001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000005f612234565b611a0d6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000085612234565b6040516311b3d5e760e01b81526001600160a01b0385811660048301526024820185905283811660448301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906311b3d5e79060640160408051808303815f875af1158015611a84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa89190612eb9565b509050611ab481612347565b5050505050565b604051638e8f294b60e01b81526001600160a01b0385811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690638e8f294b90602401606060405180830381865afa158015611b23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b479190612d48565b5050905080611b7457604051635a9a1eb960e11b81526001600160a01b03861660048201526024016106f2565b5f856001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd59190612e9e565b90505f611be48233308861236b565b9050611bfa6001600160a01b038316885f612234565b611c0e6001600160a01b0383168883612234565b604051637af1e23160e11b81526001600160a01b038781166004830152602482018390528581166044830152611c90919089169063f5e3c462906064016020604051808303815f875af1158015611c67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8b9190612d81565b612347565b50505050505050565b5f80611ca68585856120c8565b60405163a9059cbb60e01b81523360048201526024810182905291935091506001600160a01b0385169063a9059cbb906044016020604051808303815f875af1158015611cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d199190612e10565b611d455760405163241165bb60e21b8152306004820152336024820152604481018290526064016106f2565b5f82118015611d5b5750611d59848361246f565b155b15611e04575f5b60ce54811015611daa57846001600160a01b031660ce8281548110611d8957611d89612edb565b5f918252602090912001546001600160a01b031614611daa57600101611d62565b60ce548103611dfe5760ce80546001810182555f919091527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b0387161790555b50610fab565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603611e4a57611e456124fa565b610fab565b610fab846126ae565b60ce5460d0545f90821015611e685781611e6c565b60d0545b9050805b8015612020575f60ce611e84600184612dac565b81548110611e9457611e94612edb565b5f9182526020822001546040516370a0823160e01b81523060048201526001600160a01b03909116925082906370a0823190602401602060405180830381865afa158015611ee4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f089190612d81565b9050611f14828261246f565b15612016577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611f5f57611f5a6124fa565b611f68565b611f68826126ae565b60ce8054611f7890600190612dac565b81548110611f8857611f88612edb565b5f918252602090912001546001600160a01b031660ce611fa9600186612dac565b81548110611fb957611fb9612edb565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060ce805480611ff557611ff5612eef565b5f8281526020902081015f1990810180546001600160a01b03191690550190555b50505f1901611e70565b505050565b6001609755565b606580546001600160a01b03191690556107428161285e565b670de0b6b3a764000081111561074257604051635659cb3b60e01b8152670de0b6b3a76400006004820152602481018290526044016106f2565b5f54610100900460ff166120a55760405162461bcd60e51b81526004016106f290612f03565b6120ad6128af565b6120b56128dd565b6120bf838261290b565b61202082612948565b60405163afd3783b60e01b81526001600160a01b03848116600483015283811660248301525f91829182917f00000000000000000000000000000000000000000000000000000000000000009091169063afd3783b90604401602060405180830381865afa15801561213c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121609190612d81565b90505f612175670de0b6b3a764000083612dac565b90505f826121838388612f4e565b61218d9190612f65565b9050670de0b6b3a764000060c954826121a69190612f4e565b6121b09190612f65565b94506121bc8587612dac565b9350505050935093915050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c9b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261296e565b8015806122ac5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612286573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122aa9190612d81565b155b6123175760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016106f2565b6040516001600160a01b03831660248201526044810182905261202090849063095ea7b360e01b906064016121fd565b8061234f5750565b60405163125a96ab60e01b8152600481018290526024016106f2565b6040516370a0823160e01b81526001600160a01b0383811660048301525f9182918716906370a0823190602401602060405180830381865afa1580156123b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d79190612d81565b90506123ee6001600160a01b0387168686866121c9565b6040516370a0823160e01b81526001600160a01b0385811660048301528291908816906370a0823190602401602060405180830381865afa158015612435573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124599190612d81565b6124639190612dac565b9150505b949350505050565b60405163db006a7560e01b8152600481018290525f906001600160a01b0384169063db006a75906024016020604051808303815f875af19250505080156124d3575060408051601f3d908101601f191682019092526124d091810190612d81565b60015b6124de57505f6124f4565b805f036124ef5760019150506124f4565b5f9150505b92915050565b5f4790507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612557575f80fd5b505af1158015612569573d5f803e3d5ffd5b505060cf546125a993506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116935016905083612a41565b60cf546040516305bebb3b60e21b81526001600160a01b03909116906316faecec9061261e907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600190600401612f84565b5f604051808303815f87803b158015612635575f80fd5b505af1158015612647573d5f803e3d5ffd5b50506040518381526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692503391507fb68163184d017d69dff908f587b51f68dc2689426509efd546fbf77b518cc8769060200160405180910390a350565b5f816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061270f9190612e9e565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612756573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061277a9190612d81565b60cf54909150612797906001600160a01b03848116911683612a41565b60cf546040516305bebb3b60e21b81526001600160a01b03909116906316faecec906127ec907f0000000000000000000000000000000000000000000000000000000000000000908690600190600401612f84565b5f604051808303815f87803b158015612803575f80fd5b505af1158015612815573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507fb68163184d017d69dff908f587b51f68dc2689426509efd546fbf77b518cc8769060200160405180910390a3505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166128d55760405162461bcd60e51b81526004016106f290612f03565b610ca1612a71565b5f54610100900460ff166129035760405162461bcd60e51b81526004016106f290612f03565b610ca1612aa0565b5f54610100900460ff166129315760405162461bcd60e51b81526004016106f290612f03565b61293a82612045565b60c982905561142a8161154e565b5f54610100900460ff166107395760405162461bcd60e51b81526004016106f290612f03565b5f6129c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ac69092919063ffffffff16565b905080515f14806129e25750808060200190518101906129e29190612e10565b6120205760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106f2565b6040516001600160a01b03831660248201526044810182905261202090849063a9059cbb60e01b906064016121fd565b5f54610100900460ff16612a975760405162461bcd60e51b81526004016106f290612f03565b610ca13361202c565b5f54610100900460ff166120255760405162461bcd60e51b81526004016106f290612f03565b606061246784845f85855f80866001600160a01b03168587604051612aeb9190612fba565b5f6040518083038185875af1925050503d805f8114612b25576040519150601f19603f3d011682016040523d82523d5f602084013e612b2a565b606091505b5091509150612b3b87838387612b46565b979650505050505050565b60608315612bb45782515f03612bad576001600160a01b0385163b612bad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f2565b5081612467565b6124678383815115612bc95781518083602001fd5b8060405162461bcd60e51b81526004016106f29190612fd0565b6001600160a01b0381168114610742575f80fd5b5f60208284031215612c07575f80fd5b8135612c1281612be3565b9392505050565b5f8060408385031215612c2a575f80fd5b8235612c3581612be3565b91506020830135612c4581612be3565b809150509250929050565b5f805f8060808587031215612c63575f80fd5b8435612c6e81612be3565b93506020850135612c7e81612be3565b9250604085013591506060850135612c9581612be3565b939692955090935050565b5f60208284031215612cb0575f80fd5b5035919050565b5f805f60608486031215612cc9575f80fd5b8335612cd481612be3565b92506020840135612ce481612be3565b929592945050506040919091013590565b5f805f60608486031215612d07575f80fd5b833592506020840135612d1981612be3565b91506040840135612d2981612be3565b809150509250925092565b80518015158114612d43575f80fd5b919050565b5f805f60608486031215612d5a575f80fd5b612d6384612d34565b925060208401519150612d7860408501612d34565b90509250925092565b5f60208284031215612d91575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156124f4576124f4612d98565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061246790830184612dbf565b5f60208284031215612e20575f80fd5b612c1282612d34565b6001600160a01b038481168252831660208201526060604082018190525f90612e5490830184612dbf565b95945050505050565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160098310612e9157612e91612e5d565b8260208301529392505050565b5f60208284031215612eae575f80fd5b8151612c1281612be3565b5f8060408385031215612eca575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80820281158282048414176124f4576124f4612d98565b5f82612f7f57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b038481168252831660208201526060810160048310612fac57612fac612e5d565b826040830152949350505050565b5f82518060208501845e5f920191825250919050565b602081525f612c126020830184612dbf56fe72656d6f766546726f6d416c6c6f776c69737428616464726573732c616464726573732973657450656e64696e6752656465656d4368756e6b4c656e6774682875696e7432353629a2646970667358221220f890e0f51550f5adcfca5b7ccf82a5e64bd7fe332a311691d6aa41e58821a20764736f6c63430008190033",
1048
+ "deployedBytecode": "0x6080604052600436106101e9575f3560e01c80638da5cb5b11610108578063b4a0bdf31161009d578063e30c39781161006d578063e30c3978146105ba578063e9a44fd9146105d7578063f2fde38b146105f6578063f52421b314610615578063f7dcd96e14610634575f80fd5b8063b4a0bdf314610536578063b8332db714610554578063d02eb3f414610568578063e1e8ae6a1461059b575f80fd5b8063a093796a116100d8578063a093796a146104b6578063b09c7742146104d5578063b26461de146104e9578063b4988fd014610517575f80fd5b80638da5cb5b1461041d5780638e3525fc1461043a5780639254f5e51461044f5780639eb8a17914610482575f80fd5b80635fe3b5671161017e5780637debe3fe1161014e5780637debe3fe1461039d5780638722ddf2146103bc5780638765adcb146103df57806389a2bc25146103fe575f80fd5b80635fe3b5671461033857806364fd70781461036b578063715018a61461037e57806379ba509714610389575f80fd5b806336eab4ae116101b957806336eab4ae1461026757806344b3716a1461029557806347a6a971146102ce5780635ba3792d146102ed575f80fd5b80630d060ea8146101f45780630e32cb861461020a578063107568df1461022957806311ec4b7a14610248575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50610208610653565b005b348015610215575f80fd5b50610208610224366004612bf7565b610731565b348015610234575f80fd5b50610208610243366004612bf7565b610745565b348015610253575f80fd5b50610208610262366004612bf7565b610756565b348015610272575f80fd5b5060cd546102809060ff1681565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b506102806102af366004612c19565b60ca60209081525f928352604080842090915290825290205460ff1681565b3480156102d9575f80fd5b506102086102e8366004612c19565b610823565b3480156102f8575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161028c565b348015610343575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b610208610379366004612c50565b6108f5565b348015610208575f80fd5b348015610394575f80fd5b50610208610ca3565b3480156103a8575f80fd5b506102086103b7366004612c19565b610d1a565b3480156103c7575f80fd5b506103d160cc5481565b60405190815260200161028c565b3480156103ea575f80fd5b506102086103f9366004612bf7565b610e0d565b348015610409575f80fd5b50610208610418366004612ca0565b610ed6565b348015610428575f80fd5b506033546001600160a01b0316610320565b348015610445575f80fd5b506103d160c95481565b34801561045a575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b34801561048d575f80fd5b506104a161049c366004612cb7565b610f5e565b6040805192835260208301919091520161028c565b3480156104c1575f80fd5b506102086104d0366004612ca0565b610fb3565b3480156104e0575f80fd5b50610208611059565b3480156104f4575f80fd5b50610280610503366004612bf7565b60cb6020525f908152604090205460ff1681565b348015610522575f80fd5b50610208610531366004612cf5565b611137565b348015610541575f80fd5b50610102546001600160a01b0316610320565b34801561055f575f80fd5b50610208611247565b348015610573575f80fd5b506103207f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a6575f80fd5b506104a16105b5366004612cb7565b611261565b3480156105c5575f80fd5b506065546001600160a01b0316610320565b3480156105e2575f80fd5b5060cf54610320906001600160a01b031681565b348015610601575f80fd5b50610208610610366004612bf7565b61127a565b348015610620575f80fd5b5061020861062f366004612ca0565b6112eb565b34801561063f575f80fd5b5061032061064e366004612ca0565b61136a565b6106916040518060400160405280601881526020017f7061757365466f7263655641494c697175696461746528290000000000000000815250611392565b60cd5460ff166106fb5760405162461bcd60e51b815260206004820152602a60248201527f466f726365204c69717569646174696f6e206f662056414920697320616c726560448201526918591e4814185d5cd95960b21b60648201526084015b60405180910390fd5b60cd805460ff1916905560405133907f42388332be4beb2ad2ff83017119b9d702ce7fbaf67e18e53a137508cf967e43905f90a2565b61073961142e565b61074281611488565b50565b61074d61142e565b6107428161154e565b6107946040518060400160405280601c81526020017f72657374726963744c69717569646174696f6e28616464726573732900000000815250611392565b6001600160a01b0381165f90815260cb602052604090205460ff16156107d85760405163404fe9fb60e11b81526001600160a01b03821660048201526024016106f2565b6001600160a01b0381165f81815260cb6020526040808220805460ff19166001179055517f614c47c82976e8f145409efb6366fe2cefa323f389ed9354649262e38dbb35899190a250565b610844604051806060016040528060248152602001612fe360249139611392565b6001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff1661089c5760405163435aad4360e01b81526001600160a01b038084166004830152821660248201526044016106f2565b6001600160a01b038083165f81815260ca6020908152604080832094861680845294909152808220805460ff19169055517f6b0d38eafddac0d37e0aff8f4bbd5f3a3cfe124b8eabea27558bffc931ac05b59190a35050565b6108fd6115b2565b6109068361160b565b6109108333611632565b604051638e8f294b60e01b81526001600160a01b0382811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690638e8f294b90602401606060405180830381865afa158015610978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099c9190612d48565b50509050806109c957604051635a9a1eb960e11b81526001600160a01b03831660048201526024016106f2565b6109d385856116af565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610a17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3b9190612d81565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603610b2557348414610a9f5760405163dd97100160e01b8152600481018590523460248201526044016106f2565b604051635572051560e11b81526001600160a01b03868116600483015284811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063aae40a2a9034906044015f604051808303818588803b158015610b09575f80fd5b505af1158015610b1b573d5f803e3d5ffd5b5050505050610ba1565b3415610b4c5760405163dd97100160e01b81525f60048201523460248201526044016106f2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603610b9557610b9085858561190d565b610ba1565b610ba186868686611abb565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c099190612d81565b90505f610c168383612dac565b90505f80610c25898885611c99565b91509150610c31611e53565b604080518981526001600160a01b038c8116602083015291810184905260608101839052818916918b169033907fdd091524d794aecdb5235b2d816620c2598790835e0f3849808504c2dcb4f1a99060800160405180910390a4505050505050610c9b6001609755565b50505050565b565b60655433906001600160a01b03168114610d115760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106f2565b6107428161202c565b610d586040518060400160405280601f81526020017f616464546f416c6c6f776c69737428616464726573732c616464726573732900815250611392565b6001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff1615610db15760405163071df39160e01b81526001600160a01b038084166004830152821660248201526044016106f2565b6001600160a01b038083165f81815260ca6020908152604080832094861680845294909152808220805460ff19166001179055517ffe40417b78788808c927141f806ef5082e7bba0f7790f2e85b811621a91094339190a35050565b610e4b6040518060400160405280601e81526020017f756e72657374726963744c69717569646174696f6e2861646472657373290000815250611392565b6001600160a01b0381165f90815260cb602052604090205460ff16610e8e57604051633bf9d98960e11b81526001600160a01b03821660048201526024016106f2565b6001600160a01b0381165f81815260cb6020526040808220805460ff19169055517fe1f03de94d16c262d2f0e89a1c42ede8899d540ac992cf53495a5cf29c2896af9190a250565b610f146040518060400160405280601b81526020017f736574547265617375727950657263656e742875696e74323536290000000000815250611392565b610f1d81612045565b60c95460408051918252602082018390527f0e9a1641744b21c49e4183ab9ce941d420e05a05a446c71875fb07814f362c1a910160405180910390a160c955565b5f80610f6b858585611c99565b60408051838152602081018390529294509092507f965c73d6a816dcbe4cc33516168787cb029afb2156ec3372a16e8c6cfbbe6e22910160405180910390a15b935093915050565b610fd460405180606001604052806024815260200161300760249139611392565b5f81116110185760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206368756e6b2073697a6560701b60448201526064016106f2565b60d05460408051918252602082018390527fe5eef53e396f0cb79322e15e72b6c6613ae3e62c9079f5a12f2c410867c28b2c910160405180910390a160d055565b6110976040518060400160405280601981526020017f726573756d65466f7263655641494c6971756964617465282900000000000000815250611392565b60cd5460ff16156110fe5760405162461bcd60e51b815260206004820152602b60248201527f466f726365204c69717569646174696f6e206f662056414920697320616c726560448201526a18591e481c995cdd5b595960aa1b60648201526084016106f2565b60cd805460ff1916600117905560405133907fd4b8f320ada24d048ee6c25c53a31aa20b2ea37fa25542e6e239c80d31d5b60b905f90a2565b5f54610100900460ff161580801561115557505f54600160ff909116105b8061116e5750303b15801561116e57505f5460ff166001145b6111d15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106f2565b5f805460ff1916600117905580156111f2575f805461ff0019166101001790555b6111fd84848461207f565b8015610c9b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b61124f6115b2565b611257611e53565b610ca16001609755565b5f8061126e8585856120c8565b91509150935093915050565b61128261142e565b606580546001600160a01b0383166001600160a01b031990911681179091556112b36033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6113296040518060400160405280601e81526020017f7365744d696e4c6971756964617461626c655641492875696e74323536290000815250611392565b60cc5460408051918252602082018390527f8df018dc5fe866d192a3f4d9f16dbfdb38f58a7470a65b92262ccc008c55fff0910160405180910390a160cc55565b60ce8181548110611379575f80fd5b5f918252602090912001546001600160a01b0316905081565b610102546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906113c59033908690600401612ded565b602060405180830381865afa1580156113e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114049190612e10565b90508061142a57333083604051634a3fa29360e01b81526004016106f293929190612e29565b5050565b6033546001600160a01b03163314610ca15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f2565b6001600160a01b0381166114ec5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016106f2565b61010280546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b6115578161160b565b60cf546040516001600160a01b038084169216907fafec95c8612496c3ecf5dddc71e393528fe29bd145fbaf9c6b496d78d7e2d79b905f90a360cf80546001600160a01b0319166001600160a01b0392909216919091179055565b6002609754036116045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106f2565b6002609755565b6001600160a01b038116610742576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260cb602052604090205460ff16801561167e57506001600160a01b038083165f90815260ca602090815260408083209385168352929052205460ff16155b1561142a5760405163074c80eb60e51b81526001600160a01b038084166004830152821660248201526044016106f2565b604051633c617c9160e11b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906378c2f92290602401602060405180830381865afa158015611717573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061173b9190612d81565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e85a29607f000000000000000000000000000000000000000000000000000000000000000060056040518363ffffffff1660e01b81526004016117ad929190612e71565b602060405180830381865afa1580156117c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ec9190612e10565b60405163460d60c560e11b81526001600160a01b0386811660048301529192505f917f00000000000000000000000000000000000000000000000000000000000000001690638c1ac18a90602401602060405180830381865afa158015611855573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118799190612e10565b905080806118845750815b80611892575060cd5460ff16155b8061189e575060cc5483105b806118da57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b156118e6575050505050565b60cc546040516329eb1e8760e01b81526106f2918591600401918252602082015260400190565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cbeb2b286040518163ffffffff1660e01b8152600401602060405180830381865afa15801561196a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198e9190612e9e565b90506119a56001600160a01b0382163330866121c9565b6119d96001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000005f612234565b611a0d6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000085612234565b6040516311b3d5e760e01b81526001600160a01b0385811660048301526024820185905283811660448301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906311b3d5e79060640160408051808303815f875af1158015611a84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa89190612eb9565b509050611ab481612347565b5050505050565b604051638e8f294b60e01b81526001600160a01b0385811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690638e8f294b90602401606060405180830381865afa158015611b23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b479190612d48565b5050905080611b7457604051635a9a1eb960e11b81526001600160a01b03861660048201526024016106f2565b5f856001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd59190612e9e565b90505f611be48233308861236b565b9050611bfa6001600160a01b038316885f612234565b611c0e6001600160a01b0383168883612234565b604051637af1e23160e11b81526001600160a01b038781166004830152602482018390528581166044830152611c90919089169063f5e3c462906064016020604051808303815f875af1158015611c67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8b9190612d81565b612347565b50505050505050565b5f80611ca68585856120c8565b60405163a9059cbb60e01b81523360048201526024810182905291935091506001600160a01b0385169063a9059cbb906044016020604051808303815f875af1158015611cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d199190612e10565b611d455760405163241165bb60e21b8152306004820152336024820152604481018290526064016106f2565b5f82118015611d5b5750611d59848361246f565b155b15611e04575f5b60ce54811015611daa57846001600160a01b031660ce8281548110611d8957611d89612edb565b5f918252602090912001546001600160a01b031614611daa57600101611d62565b60ce548103611dfe5760ce80546001810182555f919091527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b0387161790555b50610fab565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603611e4a57611e456124fa565b610fab565b610fab846126ae565b60ce5460d0545f90821015611e685781611e6c565b60d0545b9050805b8015612020575f60ce611e84600184612dac565b81548110611e9457611e94612edb565b5f9182526020822001546040516370a0823160e01b81523060048201526001600160a01b03909116925082906370a0823190602401602060405180830381865afa158015611ee4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f089190612d81565b9050611f14828261246f565b15612016577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611f5f57611f5a6124fa565b611f68565b611f68826126ae565b60ce8054611f7890600190612dac565b81548110611f8857611f88612edb565b5f918252602090912001546001600160a01b031660ce611fa9600186612dac565b81548110611fb957611fb9612edb565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060ce805480611ff557611ff5612eef565b5f8281526020902081015f1990810180546001600160a01b03191690550190555b50505f1901611e70565b505050565b6001609755565b606580546001600160a01b03191690556107428161285e565b670de0b6b3a764000081111561074257604051635659cb3b60e01b8152670de0b6b3a76400006004820152602481018290526044016106f2565b5f54610100900460ff166120a55760405162461bcd60e51b81526004016106f290612f03565b6120ad6128af565b6120b56128dd565b6120bf838261290b565b61202082612948565b60405163afd3783b60e01b81526001600160a01b03848116600483015283811660248301525f91829182917f00000000000000000000000000000000000000000000000000000000000000009091169063afd3783b90604401602060405180830381865afa15801561213c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121609190612d81565b90505f612175670de0b6b3a764000083612dac565b90505f826121838388612f4e565b61218d9190612f65565b9050670de0b6b3a764000060c954826121a69190612f4e565b6121b09190612f65565b94506121bc8587612dac565b9350505050935093915050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c9b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261296e565b8015806122ac5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612286573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122aa9190612d81565b155b6123175760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016106f2565b6040516001600160a01b03831660248201526044810182905261202090849063095ea7b360e01b906064016121fd565b8061234f5750565b60405163125a96ab60e01b8152600481018290526024016106f2565b6040516370a0823160e01b81526001600160a01b0383811660048301525f9182918716906370a0823190602401602060405180830381865afa1580156123b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d79190612d81565b90506123ee6001600160a01b0387168686866121c9565b6040516370a0823160e01b81526001600160a01b0385811660048301528291908816906370a0823190602401602060405180830381865afa158015612435573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124599190612d81565b6124639190612dac565b9150505b949350505050565b60405163db006a7560e01b8152600481018290525f906001600160a01b0384169063db006a75906024016020604051808303815f875af19250505080156124d3575060408051601f3d908101601f191682019092526124d091810190612d81565b60015b6124de57505f6124f4565b805f036124ef5760019150506124f4565b5f9150505b92915050565b5f4790507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612557575f80fd5b505af1158015612569573d5f803e3d5ffd5b505060cf546125a993506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116935016905083612a41565b60cf546040516305bebb3b60e21b81526001600160a01b03909116906316faecec9061261e907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600190600401612f84565b5f604051808303815f87803b158015612635575f80fd5b505af1158015612647573d5f803e3d5ffd5b50506040518381526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692503391507fb68163184d017d69dff908f587b51f68dc2689426509efd546fbf77b518cc8769060200160405180910390a350565b5f816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061270f9190612e9e565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612756573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061277a9190612d81565b60cf54909150612797906001600160a01b03848116911683612a41565b60cf546040516305bebb3b60e21b81526001600160a01b03909116906316faecec906127ec907f0000000000000000000000000000000000000000000000000000000000000000908690600190600401612f84565b5f604051808303815f87803b158015612803575f80fd5b505af1158015612815573d5f803e3d5ffd5b50506040518381526001600160a01b03851692503391507fb68163184d017d69dff908f587b51f68dc2689426509efd546fbf77b518cc8769060200160405180910390a3505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166128d55760405162461bcd60e51b81526004016106f290612f03565b610ca1612a71565b5f54610100900460ff166129035760405162461bcd60e51b81526004016106f290612f03565b610ca1612aa0565b5f54610100900460ff166129315760405162461bcd60e51b81526004016106f290612f03565b61293a82612045565b60c982905561142a8161154e565b5f54610100900460ff166107395760405162461bcd60e51b81526004016106f290612f03565b5f6129c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ac69092919063ffffffff16565b905080515f14806129e25750808060200190518101906129e29190612e10565b6120205760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106f2565b6040516001600160a01b03831660248201526044810182905261202090849063a9059cbb60e01b906064016121fd565b5f54610100900460ff16612a975760405162461bcd60e51b81526004016106f290612f03565b610ca13361202c565b5f54610100900460ff166120255760405162461bcd60e51b81526004016106f290612f03565b606061246784845f85855f80866001600160a01b03168587604051612aeb9190612fba565b5f6040518083038185875af1925050503d805f8114612b25576040519150601f19603f3d011682016040523d82523d5f602084013e612b2a565b606091505b5091509150612b3b87838387612b46565b979650505050505050565b60608315612bb45782515f03612bad576001600160a01b0385163b612bad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f2565b5081612467565b6124678383815115612bc95781518083602001fd5b8060405162461bcd60e51b81526004016106f29190612fd0565b6001600160a01b0381168114610742575f80fd5b5f60208284031215612c07575f80fd5b8135612c1281612be3565b9392505050565b5f8060408385031215612c2a575f80fd5b8235612c3581612be3565b91506020830135612c4581612be3565b809150509250929050565b5f805f8060808587031215612c63575f80fd5b8435612c6e81612be3565b93506020850135612c7e81612be3565b9250604085013591506060850135612c9581612be3565b939692955090935050565b5f60208284031215612cb0575f80fd5b5035919050565b5f805f60608486031215612cc9575f80fd5b8335612cd481612be3565b92506020840135612ce481612be3565b929592945050506040919091013590565b5f805f60608486031215612d07575f80fd5b833592506020840135612d1981612be3565b91506040840135612d2981612be3565b809150509250925092565b80518015158114612d43575f80fd5b919050565b5f805f60608486031215612d5a575f80fd5b612d6384612d34565b925060208401519150612d7860408501612d34565b90509250925092565b5f60208284031215612d91575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156124f4576124f4612d98565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f9061246790830184612dbf565b5f60208284031215612e20575f80fd5b612c1282612d34565b6001600160a01b038481168252831660208201526060604082018190525f90612e5490830184612dbf565b95945050505050565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160098310612e9157612e91612e5d565b8260208301529392505050565b5f60208284031215612eae575f80fd5b8151612c1281612be3565b5f8060408385031215612eca575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80820281158282048414176124f4576124f4612d98565b5f82612f7f57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b038481168252831660208201526060810160048310612fac57612fac612e5d565b826040830152949350505050565b5f82518060208501845e5f920191825250919050565b602081525f612c126020830184612dbf56fe72656d6f766546726f6d416c6c6f776c69737428616464726573732c616464726573732973657450656e64696e6752656465656d4368756e6b4c656e6774682875696e7432353629a2646970667358221220f890e0f51550f5adcfca5b7ccf82a5e64bd7fe332a311691d6aa41e58821a20764736f6c63430008190033",
1049
1049
  "linkReferences": {},
1050
1050
  "deployedLinkReferences": {}
1051
1051
  }
@@ -0,0 +1,112 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "MockFlashLoanReceiver",
4
+ "sourceName": "contracts/test/MockFlashLoanReceiver.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract ComptrollerInterface",
10
+ "name": "comptroller",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "COMPTROLLER",
20
+ "outputs": [
21
+ {
22
+ "internalType": "contract ComptrollerInterface",
23
+ "name": "",
24
+ "type": "address"
25
+ }
26
+ ],
27
+ "stateMutability": "view",
28
+ "type": "function"
29
+ },
30
+ {
31
+ "inputs": [
32
+ {
33
+ "internalType": "contract VToken[]",
34
+ "name": "assets",
35
+ "type": "address[]"
36
+ },
37
+ {
38
+ "internalType": "uint256[]",
39
+ "name": "amounts",
40
+ "type": "uint256[]"
41
+ },
42
+ {
43
+ "internalType": "uint256[]",
44
+ "name": "premiums",
45
+ "type": "uint256[]"
46
+ },
47
+ {
48
+ "internalType": "address",
49
+ "name": "initiator",
50
+ "type": "address"
51
+ },
52
+ {
53
+ "internalType": "address",
54
+ "name": "onBehalf",
55
+ "type": "address"
56
+ },
57
+ {
58
+ "internalType": "bytes",
59
+ "name": "param",
60
+ "type": "bytes"
61
+ }
62
+ ],
63
+ "name": "executeOperation",
64
+ "outputs": [
65
+ {
66
+ "internalType": "bool",
67
+ "name": "",
68
+ "type": "bool"
69
+ },
70
+ {
71
+ "internalType": "uint256[]",
72
+ "name": "",
73
+ "type": "uint256[]"
74
+ }
75
+ ],
76
+ "stateMutability": "nonpayable",
77
+ "type": "function"
78
+ },
79
+ {
80
+ "inputs": [
81
+ {
82
+ "internalType": "contract VToken[]",
83
+ "name": "assets",
84
+ "type": "address[]"
85
+ },
86
+ {
87
+ "internalType": "uint256[]",
88
+ "name": "amounts",
89
+ "type": "uint256[]"
90
+ },
91
+ {
92
+ "internalType": "address payable",
93
+ "name": "receiver",
94
+ "type": "address"
95
+ },
96
+ {
97
+ "internalType": "bytes",
98
+ "name": "param",
99
+ "type": "bytes"
100
+ }
101
+ ],
102
+ "name": "requestFlashLoan",
103
+ "outputs": [],
104
+ "stateMutability": "nonpayable",
105
+ "type": "function"
106
+ }
107
+ ],
108
+ "bytecode": "0x6080604052348015600e575f80fd5b506040516107f33803806107f3833981016040819052602b91604e565b5f80546001600160a01b0319166001600160a01b03929092169190911790556079565b5f60208284031215605d575f80fd5b81516001600160a01b03811681146072575f80fd5b9392505050565b61076d806100865f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80635f82c67e14610043578063e99046b914610072578063fc08f9f614610087575b5f80fd5b5f54610055906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100856100803660046103cf565b6100a8565b005b61009a610095366004610486565b61011b565b604051610069929190610567565b5f546040516315513b6760e21b81526001600160a01b0390911690635544ed9c906100e590339087908c908c908c908c908b908b906004016105df565b5f604051808303815f87803b1580156100fc575f80fd5b505af115801561010e573d5f803e3d5ffd5b5050505050505050505050565b5f60605f61012d8d8d8d8d8d8d610142565b60019e909d509b505050505050505050505050565b6060855f8167ffffffffffffffff81111561015f5761015f61068e565b604051908082528060200260200182016040528015610188578160200160208202803683370190505b5090505f5b82811015610325575f8686838181106101a8576101a86106a2565b905060200201358989848181106101c1576101c16106a2565b905060200201356101d291906106b6565b90508a8a838181106101e6576101e66106a2565b90506020020160208101906101fb91906106db565b6001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610236573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025a91906106fd565b6001600160a01b031663095ea7b38c8c8581811061027a5761027a6106a2565b905060200201602081019061028f91906106db565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156102d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102fd9190610718565b5080838381518110610311576103116106a2565b60209081029190910101525060010161018d565b5098975050505050505050565b5f8083601f840112610342575f80fd5b50813567ffffffffffffffff811115610359575f80fd5b6020830191508360208260051b8501011115610373575f80fd5b9250929050565b6001600160a01b038116811461038e575f80fd5b50565b5f8083601f8401126103a1575f80fd5b50813567ffffffffffffffff8111156103b8575f80fd5b602083019150836020828501011115610373575f80fd5b5f805f805f805f6080888a0312156103e5575f80fd5b873567ffffffffffffffff808211156103fc575f80fd5b6104088b838c01610332565b909950975060208a0135915080821115610420575f80fd5b61042c8b838c01610332565b909750955060408a013591506104418261037a565b90935060608901359080821115610456575f80fd5b506104638a828b01610391565b989b979a50959850939692959293505050565b80356104818161037a565b919050565b5f805f805f805f805f8060c08b8d03121561049f575f80fd5b8a3567ffffffffffffffff808211156104b6575f80fd5b6104c28e838f01610332565b909c509a5060208d01359150808211156104da575f80fd5b6104e68e838f01610332565b909a50985060408d01359150808211156104fe575f80fd5b61050a8e838f01610332565b909850965086915061051e60608e01610476565b955061052c60808e01610476565b945060a08d0135915080821115610541575f80fd5b5061054e8d828e01610391565b915080935050809150509295989b9194979a5092959850565b5f6040820184151583526020604060208501528185518084526060860191506020870193505f5b818110156105aa5784518352938301939183019160010161058e565b5090979650505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03898116825288811660208084019190915260a06040840181905283018890525f91899160c08501845b8b8110156106375784356106238161037a565b841682529382019390820190600101610610565b5085810360608701528881526001600160fb1b03891115610656575f80fd5b8860051b9350838a83830137909201848103830160808601529161067d81840187896105b7565b9d9c50505050505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b808201808211156106d557634e487b7160e01b5f52601160045260245ffd5b92915050565b5f602082840312156106eb575f80fd5b81356106f68161037a565b9392505050565b5f6020828403121561070d575f80fd5b81516106f68161037a565b5f60208284031215610728575f80fd5b815180151581146106f6575f80fdfea2646970667358221220bb1cf8a27f2a535d2b4e97e3a71523fa45985c57abdacd644331c5610f46598564736f6c63430008190033",
109
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80635f82c67e14610043578063e99046b914610072578063fc08f9f614610087575b5f80fd5b5f54610055906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100856100803660046103cf565b6100a8565b005b61009a610095366004610486565b61011b565b604051610069929190610567565b5f546040516315513b6760e21b81526001600160a01b0390911690635544ed9c906100e590339087908c908c908c908c908b908b906004016105df565b5f604051808303815f87803b1580156100fc575f80fd5b505af115801561010e573d5f803e3d5ffd5b5050505050505050505050565b5f60605f61012d8d8d8d8d8d8d610142565b60019e909d509b505050505050505050505050565b6060855f8167ffffffffffffffff81111561015f5761015f61068e565b604051908082528060200260200182016040528015610188578160200160208202803683370190505b5090505f5b82811015610325575f8686838181106101a8576101a86106a2565b905060200201358989848181106101c1576101c16106a2565b905060200201356101d291906106b6565b90508a8a838181106101e6576101e66106a2565b90506020020160208101906101fb91906106db565b6001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610236573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025a91906106fd565b6001600160a01b031663095ea7b38c8c8581811061027a5761027a6106a2565b905060200201602081019061028f91906106db565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156102d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102fd9190610718565b5080838381518110610311576103116106a2565b60209081029190910101525060010161018d565b5098975050505050505050565b5f8083601f840112610342575f80fd5b50813567ffffffffffffffff811115610359575f80fd5b6020830191508360208260051b8501011115610373575f80fd5b9250929050565b6001600160a01b038116811461038e575f80fd5b50565b5f8083601f8401126103a1575f80fd5b50813567ffffffffffffffff8111156103b8575f80fd5b602083019150836020828501011115610373575f80fd5b5f805f805f805f6080888a0312156103e5575f80fd5b873567ffffffffffffffff808211156103fc575f80fd5b6104088b838c01610332565b909950975060208a0135915080821115610420575f80fd5b61042c8b838c01610332565b909750955060408a013591506104418261037a565b90935060608901359080821115610456575f80fd5b506104638a828b01610391565b989b979a50959850939692959293505050565b80356104818161037a565b919050565b5f805f805f805f805f8060c08b8d03121561049f575f80fd5b8a3567ffffffffffffffff808211156104b6575f80fd5b6104c28e838f01610332565b909c509a5060208d01359150808211156104da575f80fd5b6104e68e838f01610332565b909a50985060408d01359150808211156104fe575f80fd5b61050a8e838f01610332565b909850965086915061051e60608e01610476565b955061052c60808e01610476565b945060a08d0135915080821115610541575f80fd5b5061054e8d828e01610391565b915080935050809150509295989b9194979a5092959850565b5f6040820184151583526020604060208501528185518084526060860191506020870193505f5b818110156105aa5784518352938301939183019160010161058e565b5090979650505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03898116825288811660208084019190915260a06040840181905283018890525f91899160c08501845b8b8110156106375784356106238161037a565b841682529382019390820190600101610610565b5085810360608701528881526001600160fb1b03891115610656575f80fd5b8860051b9350838a83830137909201848103830160808601529161067d81840187896105b7565b9d9c50505050505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b808201808211156106d557634e487b7160e01b5f52601160045260245ffd5b92915050565b5f602082840312156106eb575f80fd5b81356106f68161037a565b9392505050565b5f6020828403121561070d575f80fd5b81516106f68161037a565b5f60208284031215610728575f80fd5b815180151581146106f6575f80fdfea2646970667358221220bb1cf8a27f2a535d2b4e97e3a71523fa45985c57abdacd644331c5610f46598564736f6c63430008190033",
110
+ "linkReferences": {},
111
+ "deployedLinkReferences": {}
112
+ }