@artblocks/contracts 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +2 -2
  2. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  3. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +97 -10
  4. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +4 -4
  5. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +4 -9
  6. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +4 -9
  7. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +4 -9
  8. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +4 -9
  9. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +12 -12
  10. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +4 -4
  11. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +6 -6
  12. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +19 -0
  13. package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +22 -22
  14. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +8 -101
  15. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +1 -57
  16. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +1 -57
  17. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +2 -21
  18. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol/ISharedMinterHolderERC20V0.json +158 -0
  19. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +15 -90
  20. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +10 -36
  21. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +4 -236
  22. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +5 -5
  23. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +7 -423
  24. package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +17 -17
  25. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
  26. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  27. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  28. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +60 -3
  29. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +30 -0
  30. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +60 -3
  31. package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +346 -0
  32. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +29 -3
  33. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +30 -3
  34. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  35. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +254 -3
  36. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +48 -3
  37. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +41 -3
  38. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +35 -3
  39. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +79 -3
  40. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  41. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +41 -41
  42. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +66 -632
  43. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -20
  44. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +67 -594
  45. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +33 -524
  46. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +66 -632
  47. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +33 -524
  48. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +51 -717
  49. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +58 -454
  50. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +61 -552
  51. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +55 -497
  52. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +110 -571
  53. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +69 -560
  54. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +28 -444
  55. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  56. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -9
  57. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  58. package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +136 -0
  59. package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +105 -0
  60. package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +100 -0
  61. package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +69 -0
  62. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +19 -19
  63. package/contracts/DependencyRegistryV0.sol +84 -16
  64. package/contracts/archive/readme.md +16 -0
  65. package/contracts/engine/README.md +21 -0
  66. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +4 -10
  67. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +4 -10
  68. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +4 -10
  69. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +4 -10
  70. package/contracts/engine-registry/CoreRegistryV1.sol +58 -65
  71. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +6 -8
  72. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +3 -0
  73. package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +25 -25
  74. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +11 -20
  75. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +1 -14
  76. package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +1 -15
  77. package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +2 -8
  78. package/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol +47 -0
  79. package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +15 -43
  80. package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +10 -20
  81. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +4 -67
  82. package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +5 -5
  83. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +7 -155
  84. package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +37 -37
  85. package/contracts/libs/v0.8.x/ABHelpers.sol +14 -14
  86. package/contracts/libs/v0.8.x/AuthLib.sol +101 -102
  87. package/contracts/libs/v0.8.x/Bytes32Strings.sol +5 -5
  88. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +163 -38
  89. package/contracts/libs/v0.8.x/minter-libs/DALib.sol +26 -0
  90. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +144 -37
  91. package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +171 -0
  92. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +250 -110
  93. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +257 -48
  94. package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +138 -58
  95. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +778 -103
  96. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +135 -13
  97. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +567 -187
  98. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +480 -322
  99. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +214 -76
  100. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +347 -304
  101. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +391 -491
  102. package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +1 -54
  103. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +388 -628
  104. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +212 -273
  105. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +393 -488
  106. package/contracts/minter-suite/Minters/MinterDALinV5.sol +220 -277
  107. package/contracts/minter-suite/Minters/MinterSEAV1.sol +327 -664
  108. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +278 -303
  109. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +355 -446
  110. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +328 -416
  111. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +538 -622
  112. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +429 -553
  113. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +180 -227
  114. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +3 -10
  115. package/contracts/mock/ReentrancyHolderMockShared.sol +59 -0
  116. package/contracts/mock/ReentrancyMerkleMockShared.sol +58 -0
  117. package/contracts/mock/ReentrancyMockShared.sol +48 -0
  118. package/contracts/mock/ReentrancySEAMockShared.sol +40 -0
  119. package/contracts/randomizer/shared/SharedRandomizerV0.sol +78 -70
  120. package/package.json +39 -33
package/README.md CHANGED
@@ -170,10 +170,10 @@ Note that this is an area of active development, and legacy randomizer contracts
170
170
 
171
171
  The most recent version of the Shared Randomizer contract is deployed at the following addresses:
172
172
 
173
- - Goerli: TBD
174
173
  - Mainnet: TBD
174
+ - Goerli Staging: `0x88293a3eef2516855BE0F798630e141D14333423`
175
+ - Arbitrum One: TBD
175
176
  - Arbitrum Goerli: TBD
176
- - Arbitrum: TBD
177
177
 
178
178
  ## Contract Source Code Verification
179
179
 
@@ -241,8 +241,8 @@
241
241
  "type": "function"
242
242
  }
243
243
  ],
244
- "bytecode": "0x60c0604052600a60809081526941646d696e41434c563160b01b60a0526000906200002b9082620000f7565b503480156200003957600080fd5b50600180546001600160a01b03191633179055620001c3565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200007d57607f821691505b6020821081036200009e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000f257600081815260208120601f850160051c81016020861015620000cd5750805b601f850160051c820191505b81811015620000ee57828155600101620000d9565b5050505b505050565b81516001600160401b0381111562000113576200011362000052565b6200012b8162000124845462000068565b84620000a4565b602080601f8311600181146200016357600084156200014a5750858301515b600019600386901b1c1916600185901b178555620000ee565b600085815260208120601f198616915b82811015620001945788860151825594840194600190910190840162000173565b5085821015620001b35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bac80620001d36000396000f3fe608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806305de62c0146100c657806329575f6a146100d9578063377a7d1a146100f9578063625e1b7d1461010e578063940ef80014610121578063985d196814610137578063ad35d2de1461014a578063bcc91a101461015d578063c81a396e14610170578063c94dca9a14610185575b600080fd5b6100b16100ac366004610894565b610198565b60405190151581526020015b60405180910390f35b6100b16100d43660046108c6565b6101cf565b6001546100ec906001600160a01b031681565b6040516100bd9190610909565b61010c61010736600461091d565b610234565b005b6100ec61011c3660046109a3565b6102cc565b6101296102d9565b6040519081526020016100bd565b61010c6101453660046109bc565b6102ea565b61010c6101583660046109bc565b61036a565b61010c61016b3660046109d7565b610422565b610178610588565b6040516100bd9190610a0a565b61010c6101933660046109bc565b610616565b60006001600160e01b03198216633001c1ef60e21b14806101c957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03908116908516036101f05750600161022d565b638911905560e01b6001600160e01b031983160161022957506001600160a01b038316600090815260036020526040902054151561022d565b5060005b9392505050565b6001546001600160a01b031633146102675760405162461bcd60e51b815260040161025e90610a58565b60405180910390fd5b600180546001600160a01b038581166001600160a01b0319831681179093556040519116919082907f3f6845104f9728af7979eed8814320daba008953c8db93b9fe32602d1f34b475906102be9087908790610a81565b60405180910390a350505050565b60006101c96002836106cb565b60006102e560026106d7565b905090565b6001546001600160a01b031633146103145760405162461bcd60e51b815260040161025e90610a58565b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561034f57600080fd5b505af1158015610363573d6000803e3d6000fd5b5050505050565b6001546001600160a01b031633146103945760405162461bcd60e51b815260040161025e90610a58565b61039f6002826106e1565b6103eb5760405162461bcd60e51b815260206004820152601e60248201527f41646d696e41434c56313a20416c726561647920726567697374657265640000604482015260640161025e565b6040516001600160a01b038216907fcfa45e813a030b8a5edb7a194db400758a7838280a892097169e8bc310a6bc9390600090a250565b6001546001600160a01b0316331461044c5760405162461bcd60e51b815260040161025e90610a58565b6040516301ffc9a760e01b8152633001c1ef60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190610acd565b6105265760405162461bcd60e51b815260206004820152603660248201527f41646d696e41434c56313a206e65772061646d696e2041434c20646f6573206e60448201527506f7420737570706f7274204941646d696e41434c56360541b606482015260840161025e565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b90610552908490600401610909565b600060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505050505050565b6000805461059590610aef565b80601f01602080910402602001604051908101604052809291908181526020018280546105c190610aef565b801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b505050505081565b6001546001600160a01b031633146106405760405162461bcd60e51b815260040161025e90610a58565b61064b6002826106f6565b6106945760405162461bcd60e51b815260206004820152601a60248201527910591b5a5b9050d3158c4e88139bdd081c9959da5cdd195c995960321b604482015260640161025e565b6040516001600160a01b038216907ff1de73f684ba2cffe486a26456673d031647e0c7964095865ed8e159873edde290600090a250565b600061022d838361070b565b60006101c9825490565b600061022d836001600160a01b038416610735565b600061022d836001600160a01b038416610784565b600082600001828154811061072257610722610b29565b9060005260206000200154905092915050565b600081815260018301602052604081205461077c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101c9565b5060006101c9565b6000818152600183016020526040812054801561086d5760006107a8600183610b3f565b85549091506000906107bc90600190610b3f565b90508181146108215760008660000182815481106107dc576107dc610b29565b90600052602060002001549050808760000184815481106107ff576107ff610b29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061083257610832610b60565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506101c9565b60009150506101c9565b80356001600160e01b03198116811461088f57600080fd5b919050565b6000602082840312156108a657600080fd5b61022d82610877565b80356001600160a01b038116811461088f57600080fd5b6000806000606084860312156108db57600080fd5b6108e4846108af565b92506108f2602085016108af565b915061090060408501610877565b90509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561093257600080fd5b61093b846108af565b9250602084013567ffffffffffffffff8082111561095857600080fd5b818601915086601f83011261096c57600080fd5b81358181111561097b57600080fd5b8760208260051b850101111561099057600080fd5b6020830194508093505050509250925092565b6000602082840312156109b557600080fd5b5035919050565b6000602082840312156109ce57600080fd5b61022d826108af565b600080604083850312156109ea57600080fd5b6109f3836108af565b9150610a01602084016108af565b90509250929050565b600060208083528351808285015260005b81811015610a3757858101830151858201604001528201610a1b565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252600f908201526e27b7363c9039bab832b920b236b4b760891b604082015260600190565b60208082528181018390526000908460408401835b86811015610ac2576001600160a01b03610aaf846108af565b1682529183019190830190600101610a96565b509695505050505050565b600060208284031215610adf57600080fd5b8151801515811461022d57600080fd5b600181811c90821680610b0357607f821691505b602082108103610b2357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b818103818111156101c957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212204049a4fe7795ca1cb35d716c53dc31e67b5d76dead42c0d6b973343da475217c64736f6c63430008130033",
245
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806305de62c0146100c657806329575f6a146100d9578063377a7d1a146100f9578063625e1b7d1461010e578063940ef80014610121578063985d196814610137578063ad35d2de1461014a578063bcc91a101461015d578063c81a396e14610170578063c94dca9a14610185575b600080fd5b6100b16100ac366004610894565b610198565b60405190151581526020015b60405180910390f35b6100b16100d43660046108c6565b6101cf565b6001546100ec906001600160a01b031681565b6040516100bd9190610909565b61010c61010736600461091d565b610234565b005b6100ec61011c3660046109a3565b6102cc565b6101296102d9565b6040519081526020016100bd565b61010c6101453660046109bc565b6102ea565b61010c6101583660046109bc565b61036a565b61010c61016b3660046109d7565b610422565b610178610588565b6040516100bd9190610a0a565b61010c6101933660046109bc565b610616565b60006001600160e01b03198216633001c1ef60e21b14806101c957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03908116908516036101f05750600161022d565b638911905560e01b6001600160e01b031983160161022957506001600160a01b038316600090815260036020526040902054151561022d565b5060005b9392505050565b6001546001600160a01b031633146102675760405162461bcd60e51b815260040161025e90610a58565b60405180910390fd5b600180546001600160a01b038581166001600160a01b0319831681179093556040519116919082907f3f6845104f9728af7979eed8814320daba008953c8db93b9fe32602d1f34b475906102be9087908790610a81565b60405180910390a350505050565b60006101c96002836106cb565b60006102e560026106d7565b905090565b6001546001600160a01b031633146103145760405162461bcd60e51b815260040161025e90610a58565b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561034f57600080fd5b505af1158015610363573d6000803e3d6000fd5b5050505050565b6001546001600160a01b031633146103945760405162461bcd60e51b815260040161025e90610a58565b61039f6002826106e1565b6103eb5760405162461bcd60e51b815260206004820152601e60248201527f41646d696e41434c56313a20416c726561647920726567697374657265640000604482015260640161025e565b6040516001600160a01b038216907fcfa45e813a030b8a5edb7a194db400758a7838280a892097169e8bc310a6bc9390600090a250565b6001546001600160a01b0316331461044c5760405162461bcd60e51b815260040161025e90610a58565b6040516301ffc9a760e01b8152633001c1ef60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190610acd565b6105265760405162461bcd60e51b815260206004820152603660248201527f41646d696e41434c56313a206e65772061646d696e2041434c20646f6573206e60448201527506f7420737570706f7274204941646d696e41434c56360541b606482015260840161025e565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b90610552908490600401610909565b600060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505050505050565b6000805461059590610aef565b80601f01602080910402602001604051908101604052809291908181526020018280546105c190610aef565b801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b505050505081565b6001546001600160a01b031633146106405760405162461bcd60e51b815260040161025e90610a58565b61064b6002826106f6565b6106945760405162461bcd60e51b815260206004820152601a60248201527910591b5a5b9050d3158c4e88139bdd081c9959da5cdd195c995960321b604482015260640161025e565b6040516001600160a01b038216907ff1de73f684ba2cffe486a26456673d031647e0c7964095865ed8e159873edde290600090a250565b600061022d838361070b565b60006101c9825490565b600061022d836001600160a01b038416610735565b600061022d836001600160a01b038416610784565b600082600001828154811061072257610722610b29565b9060005260206000200154905092915050565b600081815260018301602052604081205461077c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101c9565b5060006101c9565b6000818152600183016020526040812054801561086d5760006107a8600183610b3f565b85549091506000906107bc90600190610b3f565b90508181146108215760008660000182815481106107dc576107dc610b29565b90600052602060002001549050808760000184815481106107ff576107ff610b29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061083257610832610b60565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506101c9565b60009150506101c9565b80356001600160e01b03198116811461088f57600080fd5b919050565b6000602082840312156108a657600080fd5b61022d82610877565b80356001600160a01b038116811461088f57600080fd5b6000806000606084860312156108db57600080fd5b6108e4846108af565b92506108f2602085016108af565b915061090060408501610877565b90509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561093257600080fd5b61093b846108af565b9250602084013567ffffffffffffffff8082111561095857600080fd5b818601915086601f83011261096c57600080fd5b81358181111561097b57600080fd5b8760208260051b850101111561099057600080fd5b6020830194508093505050509250925092565b6000602082840312156109b557600080fd5b5035919050565b6000602082840312156109ce57600080fd5b61022d826108af565b600080604083850312156109ea57600080fd5b6109f3836108af565b9150610a01602084016108af565b90509250929050565b600060208083528351808285015260005b81811015610a3757858101830151858201604001528201610a1b565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252600f908201526e27b7363c9039bab832b920b236b4b760891b604082015260600190565b60208082528181018390526000908460408401835b86811015610ac2576001600160a01b03610aaf846108af565b1682529183019190830190600101610a96565b509695505050505050565b600060208284031215610adf57600080fd5b8151801515811461022d57600080fd5b600181811c90821680610b0357607f821691505b602082108103610b2357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b818103818111156101c957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212204049a4fe7795ca1cb35d716c53dc31e67b5d76dead42c0d6b973343da475217c64736f6c63430008130033",
244
+ "bytecode": "0x60c0604052600a60809081526941646d696e41434c563160b01b60a0526000906200002b9082620000f7565b503480156200003957600080fd5b50600180546001600160a01b03191633179055620001c3565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200007d57607f821691505b6020821081036200009e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000f257600081815260208120601f850160051c81016020861015620000cd5750805b601f850160051c820191505b81811015620000ee57828155600101620000d9565b5050505b505050565b81516001600160401b0381111562000113576200011362000052565b6200012b8162000124845462000068565b84620000a4565b602080601f8311600181146200016357600084156200014a5750858301515b600019600386901b1c1916600185901b178555620000ee565b600085815260208120601f198616915b82811015620001945788860151825594840194600190910190840162000173565b5085821015620001b35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bac80620001d36000396000f3fe608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806305de62c0146100c657806329575f6a146100d9578063377a7d1a146100f9578063625e1b7d1461010e578063940ef80014610121578063985d196814610137578063ad35d2de1461014a578063bcc91a101461015d578063c81a396e14610170578063c94dca9a14610185575b600080fd5b6100b16100ac366004610894565b610198565b60405190151581526020015b60405180910390f35b6100b16100d43660046108c6565b6101cf565b6001546100ec906001600160a01b031681565b6040516100bd9190610909565b61010c61010736600461091d565b610234565b005b6100ec61011c3660046109a3565b6102cc565b6101296102d9565b6040519081526020016100bd565b61010c6101453660046109bc565b6102ea565b61010c6101583660046109bc565b61036a565b61010c61016b3660046109d7565b610422565b610178610588565b6040516100bd9190610a0a565b61010c6101933660046109bc565b610616565b60006001600160e01b03198216633001c1ef60e21b14806101c957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03908116908516036101f05750600161022d565b638911905560e01b6001600160e01b031983160161022957506001600160a01b038316600090815260036020526040902054151561022d565b5060005b9392505050565b6001546001600160a01b031633146102675760405162461bcd60e51b815260040161025e90610a58565b60405180910390fd5b600180546001600160a01b038581166001600160a01b0319831681179093556040519116919082907f3f6845104f9728af7979eed8814320daba008953c8db93b9fe32602d1f34b475906102be9087908790610a81565b60405180910390a350505050565b60006101c96002836106cb565b60006102e560026106d7565b905090565b6001546001600160a01b031633146103145760405162461bcd60e51b815260040161025e90610a58565b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561034f57600080fd5b505af1158015610363573d6000803e3d6000fd5b5050505050565b6001546001600160a01b031633146103945760405162461bcd60e51b815260040161025e90610a58565b61039f6002826106e1565b6103eb5760405162461bcd60e51b815260206004820152601e60248201527f41646d696e41434c56313a20416c726561647920726567697374657265640000604482015260640161025e565b6040516001600160a01b038216907fcfa45e813a030b8a5edb7a194db400758a7838280a892097169e8bc310a6bc9390600090a250565b6001546001600160a01b0316331461044c5760405162461bcd60e51b815260040161025e90610a58565b6040516301ffc9a760e01b8152633001c1ef60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190610acd565b6105265760405162461bcd60e51b815260206004820152603660248201527f41646d696e41434c56313a206e65772061646d696e2041434c20646f6573206e60448201527506f7420737570706f7274204941646d696e41434c56360541b606482015260840161025e565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b90610552908490600401610909565b600060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505050505050565b6000805461059590610aef565b80601f01602080910402602001604051908101604052809291908181526020018280546105c190610aef565b801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b505050505081565b6001546001600160a01b031633146106405760405162461bcd60e51b815260040161025e90610a58565b61064b6002826106f6565b6106945760405162461bcd60e51b815260206004820152601a60248201527910591b5a5b9050d3158c4e88139bdd081c9959da5cdd195c995960321b604482015260640161025e565b6040516001600160a01b038216907ff1de73f684ba2cffe486a26456673d031647e0c7964095865ed8e159873edde290600090a250565b600061022d838361070b565b60006101c9825490565b600061022d836001600160a01b038416610735565b600061022d836001600160a01b038416610784565b600082600001828154811061072257610722610b29565b9060005260206000200154905092915050565b600081815260018301602052604081205461077c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101c9565b5060006101c9565b6000818152600183016020526040812054801561086d5760006107a8600183610b3f565b85549091506000906107bc90600190610b3f565b90508181146108215760008660000182815481106107dc576107dc610b29565b90600052602060002001549050808760000184815481106107ff576107ff610b29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061083257610832610b60565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506101c9565b60009150506101c9565b80356001600160e01b03198116811461088f57600080fd5b919050565b6000602082840312156108a657600080fd5b61022d82610877565b80356001600160a01b038116811461088f57600080fd5b6000806000606084860312156108db57600080fd5b6108e4846108af565b92506108f2602085016108af565b915061090060408501610877565b90509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561093257600080fd5b61093b846108af565b9250602084013567ffffffffffffffff8082111561095857600080fd5b818601915086601f83011261096c57600080fd5b81358181111561097b57600080fd5b8760208260051b850101111561099057600080fd5b6020830194508093505050509250925092565b6000602082840312156109b557600080fd5b5035919050565b6000602082840312156109ce57600080fd5b61022d826108af565b600080604083850312156109ea57600080fd5b6109f3836108af565b9150610a01602084016108af565b90509250929050565b600060208083528351808285015260005b81811015610a3757858101830151858201604001528201610a1b565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252600f908201526e27b7363c9039bab832b920b236b4b760891b604082015260600190565b60208082528181018390526000908460408401835b86811015610ac2576001600160a01b03610aaf846108af565b1682529183019190830190600101610a96565b509695505050505050565b600060208284031215610adf57600080fd5b8151801515811461022d57600080fd5b600181811c90821680610b0357607f821691505b602082108103610b2357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b818103818111156101c957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a99ec94dc6972792473e7f933453fce4602b843090f87a0b634b76d64830549e64736f6c63430008130033",
245
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806305de62c0146100c657806329575f6a146100d9578063377a7d1a146100f9578063625e1b7d1461010e578063940ef80014610121578063985d196814610137578063ad35d2de1461014a578063bcc91a101461015d578063c81a396e14610170578063c94dca9a14610185575b600080fd5b6100b16100ac366004610894565b610198565b60405190151581526020015b60405180910390f35b6100b16100d43660046108c6565b6101cf565b6001546100ec906001600160a01b031681565b6040516100bd9190610909565b61010c61010736600461091d565b610234565b005b6100ec61011c3660046109a3565b6102cc565b6101296102d9565b6040519081526020016100bd565b61010c6101453660046109bc565b6102ea565b61010c6101583660046109bc565b61036a565b61010c61016b3660046109d7565b610422565b610178610588565b6040516100bd9190610a0a565b61010c6101933660046109bc565b610616565b60006001600160e01b03198216633001c1ef60e21b14806101c957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001546000906001600160a01b03908116908516036101f05750600161022d565b638911905560e01b6001600160e01b031983160161022957506001600160a01b038316600090815260036020526040902054151561022d565b5060005b9392505050565b6001546001600160a01b031633146102675760405162461bcd60e51b815260040161025e90610a58565b60405180910390fd5b600180546001600160a01b038581166001600160a01b0319831681179093556040519116919082907f3f6845104f9728af7979eed8814320daba008953c8db93b9fe32602d1f34b475906102be9087908790610a81565b60405180910390a350505050565b60006101c96002836106cb565b60006102e560026106d7565b905090565b6001546001600160a01b031633146103145760405162461bcd60e51b815260040161025e90610a58565b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561034f57600080fd5b505af1158015610363573d6000803e3d6000fd5b5050505050565b6001546001600160a01b031633146103945760405162461bcd60e51b815260040161025e90610a58565b61039f6002826106e1565b6103eb5760405162461bcd60e51b815260206004820152601e60248201527f41646d696e41434c56313a20416c726561647920726567697374657265640000604482015260640161025e565b6040516001600160a01b038216907fcfa45e813a030b8a5edb7a194db400758a7838280a892097169e8bc310a6bc9390600090a250565b6001546001600160a01b0316331461044c5760405162461bcd60e51b815260040161025e90610a58565b6040516301ffc9a760e01b8152633001c1ef60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190610acd565b6105265760405162461bcd60e51b815260206004820152603660248201527f41646d696e41434c56313a206e65772061646d696e2041434c20646f6573206e60448201527506f7420737570706f7274204941646d696e41434c56360541b606482015260840161025e565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b90610552908490600401610909565b600060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505050505050565b6000805461059590610aef565b80601f01602080910402602001604051908101604052809291908181526020018280546105c190610aef565b801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b505050505081565b6001546001600160a01b031633146106405760405162461bcd60e51b815260040161025e90610a58565b61064b6002826106f6565b6106945760405162461bcd60e51b815260206004820152601a60248201527910591b5a5b9050d3158c4e88139bdd081c9959da5cdd195c995960321b604482015260640161025e565b6040516001600160a01b038216907ff1de73f684ba2cffe486a26456673d031647e0c7964095865ed8e159873edde290600090a250565b600061022d838361070b565b60006101c9825490565b600061022d836001600160a01b038416610735565b600061022d836001600160a01b038416610784565b600082600001828154811061072257610722610b29565b9060005260206000200154905092915050565b600081815260018301602052604081205461077c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101c9565b5060006101c9565b6000818152600183016020526040812054801561086d5760006107a8600183610b3f565b85549091506000906107bc90600190610b3f565b90508181146108215760008660000182815481106107dc576107dc610b29565b90600052602060002001549050808760000184815481106107ff576107ff610b29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061083257610832610b60565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506101c9565b60009150506101c9565b80356001600160e01b03198116811461088f57600080fd5b919050565b6000602082840312156108a657600080fd5b61022d82610877565b80356001600160a01b038116811461088f57600080fd5b6000806000606084860312156108db57600080fd5b6108e4846108af565b92506108f2602085016108af565b915061090060408501610877565b90509250925092565b6001600160a01b0391909116815260200190565b60008060006040848603121561093257600080fd5b61093b846108af565b9250602084013567ffffffffffffffff8082111561095857600080fd5b818601915086601f83011261096c57600080fd5b81358181111561097b57600080fd5b8760208260051b850101111561099057600080fd5b6020830194508093505050509250925092565b6000602082840312156109b557600080fd5b5035919050565b6000602082840312156109ce57600080fd5b61022d826108af565b600080604083850312156109ea57600080fd5b6109f3836108af565b9150610a01602084016108af565b90509250929050565b600060208083528351808285015260005b81811015610a3757858101830151858201604001528201610a1b565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252600f908201526e27b7363c9039bab832b920b236b4b760891b604082015260600190565b60208082528181018390526000908460408401835b86811015610ac2576001600160a01b03610aaf846108af565b1682529183019190830190600101610a96565b509695505050505050565b600060208284031215610adf57600080fd5b8151801515811461022d57600080fd5b600181811c90821680610b0357607f821691505b602082108103610b2357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b818103818111156101c957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a99ec94dc6972792473e7f933453fce4602b843090f87a0b634b76d64830549e64736f6c63430008130033",
246
246
  "linkReferences": {},
247
247
  "deployedLinkReferences": {}
248
248
  }
@@ -12,6 +12,12 @@
12
12
  "name": "_dependencyType",
13
13
  "type": "bytes32"
14
14
  },
15
+ {
16
+ "indexed": true,
17
+ "internalType": "bytes32",
18
+ "name": "_licenseType",
19
+ "type": "bytes32"
20
+ },
15
21
  {
16
22
  "indexed": false,
17
23
  "internalType": "string",
@@ -218,6 +224,19 @@
218
224
  "name": "Initialized",
219
225
  "type": "event"
220
226
  },
227
+ {
228
+ "anonymous": false,
229
+ "inputs": [
230
+ {
231
+ "indexed": true,
232
+ "internalType": "bytes32",
233
+ "name": "_licenseType",
234
+ "type": "bytes32"
235
+ }
236
+ ],
237
+ "name": "LicenseTypeAdded",
238
+ "type": "event"
239
+ },
221
240
  {
222
241
  "anonymous": false,
223
242
  "inputs": [
@@ -314,6 +333,11 @@
314
333
  "name": "_dependencyType",
315
334
  "type": "bytes32"
316
335
  },
336
+ {
337
+ "internalType": "bytes32",
338
+ "name": "_licenseType",
339
+ "type": "bytes32"
340
+ },
317
341
  {
318
342
  "internalType": "string",
319
343
  "name": "_preferredCDN",
@@ -407,6 +431,19 @@
407
431
  "stateMutability": "nonpayable",
408
432
  "type": "function"
409
433
  },
434
+ {
435
+ "inputs": [
436
+ {
437
+ "internalType": "bytes32",
438
+ "name": "_licenseType",
439
+ "type": "bytes32"
440
+ }
441
+ ],
442
+ "name": "addLicenseType",
443
+ "outputs": [],
444
+ "stateMutability": "nonpayable",
445
+ "type": "function"
446
+ },
410
447
  {
411
448
  "inputs": [
412
449
  {
@@ -548,6 +585,11 @@
548
585
  "name": "typeAndVersion",
549
586
  "type": "string"
550
587
  },
588
+ {
589
+ "internalType": "string",
590
+ "name": "licenseType",
591
+ "type": "string"
592
+ },
551
593
  {
552
594
  "internalType": "string",
553
595
  "name": "preferredCDN",
@@ -747,6 +789,51 @@
747
789
  "stateMutability": "view",
748
790
  "type": "function"
749
791
  },
792
+ {
793
+ "inputs": [
794
+ {
795
+ "internalType": "uint256",
796
+ "name": "_index",
797
+ "type": "uint256"
798
+ }
799
+ ],
800
+ "name": "getLicenseType",
801
+ "outputs": [
802
+ {
803
+ "internalType": "string",
804
+ "name": "",
805
+ "type": "string"
806
+ }
807
+ ],
808
+ "stateMutability": "view",
809
+ "type": "function"
810
+ },
811
+ {
812
+ "inputs": [],
813
+ "name": "getLicenseTypeCount",
814
+ "outputs": [
815
+ {
816
+ "internalType": "uint256",
817
+ "name": "",
818
+ "type": "uint256"
819
+ }
820
+ ],
821
+ "stateMutability": "view",
822
+ "type": "function"
823
+ },
824
+ {
825
+ "inputs": [],
826
+ "name": "getLicenseTypes",
827
+ "outputs": [
828
+ {
829
+ "internalType": "string[]",
830
+ "name": "",
831
+ "type": "string[]"
832
+ }
833
+ ],
834
+ "stateMutability": "view",
835
+ "type": "function"
836
+ },
750
837
  {
751
838
  "inputs": [
752
839
  {
@@ -1097,26 +1184,26 @@
1097
1184
  "type": "function"
1098
1185
  }
1099
1186
  ],
1100
- "bytecode": "0x608060405234801561001057600080fd5b5061311d806100206000396000f3fe608060405234801561001057600080fd5b50600436106101f25760003560e01c80638da5cb5b116101165780638da5cb5b146103d4578063a1a7a47b146103dc578063a809c1fc146103ef578063b86b69f114610402578063ba2285121461040a578063bbf2aefb1461041d578063bd880b4614610430578063be3d3ee614610443578063c0cd565f14610456578063c4d66de814610469578063caaa3bb71461047c578063cea2961a1461048f578063dbc71ccb146104a2578063dc33f4ae146104b5578063dfa3be53146104c8578063f0b99382146104db578063f146f17f146104ee578063f2fde38b14610501578063f73f499114610514578063f8ac18be14610527578063f9c0fae61461053a57600080fd5b8062e87903146101f757806307f9f786146102205780631376218614610235578063199eb8e01461024a5780631a051d491461025d5780631e9bef4614610270578063230448b11461029057806325ffb376146102b35780633bd7cfa2146102da5780633e76919a146102ed578063474bbdc2146103005780634bd1a38714610313578063518cb3df1461032657806351eda9991461033957806352ccc0211461034e5780635668bc5e146103615780635710f83d1461039e5780636dfa9f56146103b1578063715018a6146103c45780637cbb45c8146103cc575b600080fd5b61020a61020536600461262e565b61054d565b60405161021791906126a0565b60405180910390f35b610228610617565b60405161021791906126b3565b6102486102433660046127c3565b6106c6565b005b61024861025836600461282e565b610766565b61024861026b3660046127c3565b6107c1565b606554610283906001600160a01b031681565b6040516102179190612849565b6102a361029e36600461285d565b610861565b6040519015158152602001610217565b6102c66102c13660046128b1565b61090f565b6040516102179897969594939291906128ca565b6102486102e836600461294f565b610b26565b6102836102fb3660046128b1565b610b97565b61020a61030e366004612995565b610bb7565b6102486103213660046129bf565b610cf8565b61020a61033436600461262e565b610dbb565b610341610faa565b60405161021791906129eb565b61024861035c3660046128b1565b611069565b61039061036f3660046128b1565b600090815260686020526040902060060154600160301b900462ffffff1690565b604051908152602001610217565b6102486103ac36600461294f565b61117d565b6102486103bf36600461262e565b611235565b610248611327565b61039061133b565b61028361134c565b6102486103ea36600461262e565b611360565b6102486103fd366004612a4d565b61142e565b610390611573565b61039061041836600461262e565b61157f565b61024861042b366004612ade565b61164f565b61020a61043e3660046128b1565b6116d0565b61024861045136600461294f565b6116ee565b610248610464366004612b11565b611750565b61024861047736600461282e565b6117e0565b61024861048a3660046127c3565b6118fb565b6102a361049d36600461282e565b611994565b6102486104b036600461282e565b6119a1565b6102486104c336600461294f565b611a52565b6102836104d636600461262e565b611ae1565b61020a6104e936600461262e565b611b2a565b6102486104fc36600461294f565b611b73565b61024861050f36600461282e565b611c24565b610248610522366004612995565b611c9d565b6102486105353660046128b1565b611d6d565b61024861054836600461294f565b611ed7565b600082815260686020526040902060068101546060919061057490849062ffffff16611f3c565b60008381526001820160205260409020805461058f90612b46565b80601f01602080910402602001604051908101604052809291908181526020018280546105bb90612b46565b80156106085780601f106105dd57610100808354040283529160200191610608565b820191906000526020600020905b8154815290600101906020018083116105eb57829003601f168201915b50505050509150505b92915050565b606060006106256069611f80565b90506000816001600160401b0381111561064157610641612700565b60405190808252806020026020018201604052801561066a578160200160208202803683370190505b50905060005b828110156106bf57610683606982611f8a565b82828151811061069557610695612b7a565b6001600160a01b0390921660209283029190910190910152806106b781612ba6565b915050610670565b5092915050565b6106d66309bb10c360e11b611f96565b6106df81611fe6565b6106e883612035565b6000838152606860205260409020600681015461070b90849062ffffff16611f3c565b600083815260018201602052604090206107258382612c23565b50837f5f667fb1eaf23e0fee1a9dcc154d842202b184eb9ad83502c00c784808a8d00d8385604051610758929190612cdc565b60405180910390a250505050565b61077562ccf5c760e51b611f96565b61077e8161208c565b6107896069826120e1565b506040516001600160a01b038216907f2453d2f77bae1012d39e2257356d2566625ebe0ffd6094198aa051689dc65ba090600090a250565b6107d1631a051d4960e01b611f96565b6107da81611fe6565b6107e383612035565b6000838152606860205260409020600681015461080d908490600160301b900462ffffff16611f3c565b610816826120f6565b600084815260058301602052604080822080546001600160a01b0319166001600160a01b039490941693909317909255905185916000805160206130c883398151915291a250505050565b60008061086c61134c565b6001600160a01b03161415801561090557506065546040516217798b60e61b81526001600160a01b03868116600483015285811660248301526001600160e01b031985166044830152909116906305de62c0906064016020604051808303816000875af11580156108e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109059190612cfe565b90505b9392505050565b60008181526068602052604081206060918291829082908290829081906109358a6121a6565b60068201548254839162ffffff808216926002850192630100000081048316926004870192600160301b9092041680151591879061097290612b46565b80601f016020809104026020016040519081016040528092919081815260200182805461099e90612b46565b80156109eb5780601f106109c0576101008083540402835291602001916109eb565b820191906000526020600020905b8154815290600101906020018083116109ce57829003601f168201915b505050505096508480546109fe90612b46565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2a90612b46565b8015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050509450828054610a8a90612b46565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab690612b46565b8015610b035780601f10610ad857610100808354040283529160200191610b03565b820191906000526020600020905b815481529060010190602001808311610ae657829003601f168201915b505050505092509850985098509850985098509850985050919395975091939597565b610b36631debe7d160e11b611f96565b610b3f82612035565b6000828152606860205260409020600401610b5a8282612c23565b50817f9959f3af1c0191277b92c192984b5ca38adaf82d8465332b4da850e0e6a199f482604051610b8b91906126a0565b60405180910390a25050565b6000610bac82610ba76069611f80565b611f3c565b610611606983611f8a565b6060610bc28361208c565b6001600160a01b0383166000908152606b602090815260408083208584529091529020548015610bfd57610bf5816121a6565b915050610611565b604051633ae7357560e21b8152600481018490526001600160a01b0385169063eb9cd5d490602401600060405180830381865afa925050508015610c6357506040513d6000823e601f3d908101601f19168201604052610c609190810190612d70565b60015b610cec5760405162461bcd60e51b815260206004820152604960248201527f436f6e747261637420646f6573206e6f7420696d706c656d656e742070726f6a60448201527f65637453637269707444657461696c7320616e6420686173206e6f206f7665726064820152683934b2329039b2ba1760b91b608482015260a4015b60405180910390fd5b82945050505050610611565b610d08634bd1a38760e01b611f96565b610d1181612211565b610d1a82612035565b6000828152606860209081526040808320600681018054600160301b9081900462ffffff9081168752600584019095529290942080546001600160a01b0319166001600160a01b0387161790559254610d7892919004166001612ddc565b60068201805462ffffff92909216600160301b0262ffffff60301b1990921691909117905560405183906000805160206130c883398151915290600090a2505050565b6000828152606860205260409020600681015460609190610de9908490600160301b900462ffffff16611f3c565b600083815260058201602052604080822054905163cc31a33160e01b81526001600160a01b03909116919073__$55f4e50e6128becd8bf164b272db98df09$__9063cc31a33190610e3e908590600401612849565b602060405180830381865af4158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190612df8565b90507f554e4b4e4f574e5f56455253494f4e5f535452494e475f5f5f5f5f5f5f5f5f208103610f2e57604051632475d70960e01b815273__$55f4e50e6128becd8bf164b272db98df09$__90632475d70990610edf908590600401612849565b600060405180830381865af4158015610efc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f249190810190612e11565b9350505050610611565b604051630eacc5e760e31b815273__$55f4e50e6128becd8bf164b272db98df09$__906375662f3890610f65908590600401612849565b600060405180830381865af4158015610f82573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f249190810190612e59565b60606000610fb86066611f80565b6001600160401b03811115610fcf57610fcf612700565b60405190808252806020026020018201604052801561100257816020015b6060815260200190600190039081610fed5790505b50905060006110116066611f80565b905060005b818110156110615761103161102c606683611f8a565b6121a6565b83828151811061104357611043612b7a565b6020026020010181905250808061105990612ba6565b915050611016565b509092915050565b6110796352ccc02160e01b611f96565b61108281612035565b60008181526068602052604090206006810154600160301b900462ffffff166110ed5760405162461bcd60e51b815260206004820152601e60248201527f746865726520617265206e6f207363726970747320746f2072656d6f766500006044820152606401610ce3565b6006810154600582019060009061111290600190600160301b900462ffffff16612e8d565b62ffffff908116825260208201929092526040908101600090812080546001600160a01b031916905560068401805462ffffff60301b198116600160301b9182900486166000190190951602939093179092555183916000805160206130c883398151915291a25050565b61118d635710f83d60e01b611f96565b61119681611fe6565b61119f82612035565b600082815260686020908152604080832060068101546301000000900462ffffff168085526003820190935292206111d78482612c23565b506111e3816001612ea9565b8260060160036101000a81548162ffffff021916908362ffffff160217905550837ffe07adc986f904acd19c0f4f5d0716973976f0450de010a753a52d119ddadbde8483604051610758929190612cdc565b6112456336fd4fab60e11b611f96565b61124e82612035565b600082815260686020526040902060068101546301000000900462ffffff166112778382611f3c565b6000611284600183612ebc565b6000868152606860209081526040808320848452600390810183528184208985529088019092529091209192506112bb9082612ecf565b50600081815260038401602052604081206112d5916125e0565b60068301805465ffffff0000001916630100000062ffffff841602179055604051849086907fc02725dfc9639e3399432cdae3db1c062229f4cc41bcc18631517617c020b71c90600090a35050505050565b61132f612265565b61133960006122c4565b565b60006113476066611f80565b905090565b60006113476033546001600160a01b031690565b61137063a1a7a47b60e01b611f96565b61137982612035565b6000828152606860205260409020600681015462ffffff1661139b8382611f3c565b60006113a8600183612ebc565b600081815260018501602052604080822087835291209192506113cb9082612ecf565b50600081815260018401602052604081206113e5916125e0565b60068301805462ffffff191662ffffff8316179055604051849086907f225454b600cf489553fde6e3b7f5e458b1093c035390b678067ea799b3b016cd90600090a35050505050565b61143e632a02707f60e21b611f96565b6114496066856122ef565b156114965760405162461bcd60e51b815260206004820152601e60248201527f446570656e64656e6379207479706520616c72656164792065786973747300006044820152606401610ce3565b6114a384604060016122fb565b6114ec5760405162461bcd60e51b815260206004820152601a60248201527901b5d5cdd0818dbdb9d185a5b88195e1858dd1b1e481bdb9948160361b6044820152606401610ce3565b6114f760668561236e565b506000848152606860205260409020806115118582612c23565b50600281016115208482612c23565b506004810161152f8382612c23565b50847f39626dd6a5a74e9944752116c5e878fbb4c1ac0cab72cd316f6f25ee19cff76585858560405161156493929190612fa3565b60405180910390a25050505050565b60006113476069611f80565b600082815260686020526040812060068101546115a9908490600160301b900462ffffff16611f3c565b60008481526068602090815260408083208684526005019091529081902054905163cc31a33160e01b815273__$55f4e50e6128becd8bf164b272db98df09$__9163cc31a33191611606916001600160a01b031690600401612849565b602060405180830381865af4158015611623573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116479190612df8565b949350505050565b61165f63bbf2aefb60e01b611f96565b61166881612035565b6116718361208c565b6001600160a01b0383166000818152606b6020908152604080832086845282529182902084905590518381528492917f27d39273f3676c181ec3de60b583da776123d9f9517761fb91f370a83c798918910160405180910390a3505050565b60606116e082610ba76066611f80565b61061161102c606684611f8a565b6116fe635f1e9f7360e11b611f96565b61170782612035565b600082815260686020526040902061171f8282612c23565b50817fc9890a31ec780bb5a8a017d683d3913f97260548d71c2cee78194ed2833f023582604051610b8b91906126a0565b61176063c0cd565f60e01b611f96565b61176981612211565b61177283612035565b6000838152606860205260409020600681015461179c908490600160301b900462ffffff16611f3c565b600083815260058201602052604080822080546001600160a01b0319166001600160a01b0386161790555185916000805160206130c883398151915291a250505050565b600054610100900460ff16158080156118005750600054600160ff909116105b8061181a5750303b15801561181a575060005460ff166001145b61187d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ce3565b6000805460ff1916600117905580156118a0576000805461ff0019166101001790555b6118a861237a565b6118b1826122c4565b80156118f7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b61190b63caaa3bb760e01b611f96565b61191481611fe6565b61191d83612035565b600083815260686020526040902060068101546119479084906301000000900462ffffff16611f3c565b600083815260038201602052604090206119618382612c23565b50837ffe07adc986f904acd19c0f4f5d0716973976f0450de010a753a52d119ddadbde8385604051610758929190612cdc565b60006106116069836123a9565b6119b163dbc71ccb60e01b611f96565b6119ba81612211565b6119c56069826123a9565b15611a0f5760405162461bcd60e51b815260206004820152601a60248201527910dbdb9d1c9858dd08185b1c9958591e481cdd5c1c1bdc9d195960321b6044820152606401610ce3565b611a1a6069826123be565b506040516001600160a01b038216907f59e1b889b92ad05213b7934a67c5d824348c868455d1c741a2cfe16e46d832dc90600090a250565b611a62636e19fa5760e11b611f96565b611a6b81611fe6565b611a7482612035565b6000828152606860205260409020611a8b826120f6565b600682018054600160301b9081900462ffffff9081166000908152600586016020526040902080546001600160a01b0319166001600160a01b0395909516949094179093559054610d7892919004166001612ddc565b60008281526068602052604081206006810154611b0b908490600160301b900462ffffff16611f3c565b60009283526005016020525060409020546001600160a01b0316919050565b6000828152606860205260409020600681015460609190611b589084906301000000900462ffffff16611f3c565b60008381526003820160205260409020805461058f90612b46565b611b8363f146f17f60e01b611f96565b611b8c81611fe6565b611b9582612035565b6000828152606860209081526040808320600681015462ffffff16808552600182019093529220611bc68482612c23565b50611bd2816001612ea9565b8260060160006101000a81548162ffffff021916908362ffffff160217905550837f5f667fb1eaf23e0fee1a9dcc154d842202b184eb9ad83502c00c784808a8d00d8483604051610758929190612cdc565b611c2c612265565b6001600160a01b038116611c915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ce3565b611c9a816122c4565b50565b611cad63f73f499160e01b611f96565b6001600160a01b0382166000908152606b60209081526040808320848452909152902054611d1b5760405162461bcd60e51b815260206004820152601b60248201527a139bc81bdd995c9c9a5919481cd95d08199bdc881c1c9bda9958dd602a1b6044820152606401610ce3565b6001600160a01b0382166000818152606b60209081526040808320858452909152808220829055518392917f0732620824c0200808d04ab037f3abc3c31853170b90f5a855d32f44486048ed91a35050565b611d7d637c560c5f60e11b611f96565b611d8681612035565b6000818152606860205260409020600681015462ffffff16158015611db9575060068101546301000000900462ffffff16155b8015611dd357506006810154600160301b900462ffffff16155b611e555760405162461bcd60e51b815260206004820152604760248201527f43616e6e6f742072656d6f766520646570656e64656e6379207769746820616460448201527f646974696f6e616c2043444e732c207265706f7369746f726965732c206f72206064820152667363726970747360c81b608482015260a401610ce3565b611e606066836123d3565b50600082815260686020526040812090611e7a82826125e0565b611e886002830160006125e0565b611e966004830160006125e0565b5060060180546001600160481b031916905560405182907f60e2aa021c4f5303dd65e2173f0180636e4d42eaefc6187278e92bee9d06aa7290600090a25050565b611ee7637ce07d7360e11b611f96565b611ef082612035565b6000828152606860205260409020600201611f0b8282612c23565b50817f774918414e4887efe5349a305fe253ee8b1e3fe0c2117012f0c215645693cbfd82604051610b8b91906126a0565b8082106118f75760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b6044820152606401610ce3565b6000610611825490565b600061090883836123df565b611fa1333083610861565b611c9a5760405162461bcd60e51b815260206004820152601660248201527513db9b1e4810591b5a5b881050d308185b1b1bddd95960521b6044820152606401610ce3565b8051600003611c9a5760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d656d70747920737472696e6760281b6044820152606401610ce3565b6120406066826122ef565b611c9a5760405162461bcd60e51b815260206004820152601e60248201527f446570656e64656e6379207479706520646f6573206e6f7420657869737400006044820152606401610ce3565b6120976069826123a9565b611c9a5760405162461bcd60e51b815260206004820152601b60248201527a10dbdc994818dbdb9d1c9858dd081b9bdd081cdd5c1c1bdc9d1959602a1b6044820152606401610ce3565b6000610908836001600160a01b038416612409565b6000807f42797465636f646553746f726167655f56312e302e305f5f5f5f5f5f5f5f5f20308460405160200161212e93929190612fe6565b60405160208183030381529060405290508051602082016000f091506001600160a01b0382166121a05760405162461bcd60e51b815260206004820152601e60248201527f436f6e7472616374417353746f726167653a205772697465204572726f7200006044820152606401610ce3565b50919050565b606060005b828160ff16602081106121c0576121c0612b7a565b1a60f81b6001600160f81b031916158015906121df575060208160ff16105b156121f657806121ee81613047565b9150506121ab565b60405191506040820160405280825282602083015250919050565b6001600160a01b038116611c9a5760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d7a65726f206164647265737360281b6044820152606401610ce3565b3361226e61134c565b6001600160a01b0316146113395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ce3565b6122cd816124fc565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610908838361254e565b600080805b60208160ff16101561235a576000868260ff166020811061232357612323612b7a565b1a90508015801590612338575060808160ff16105b15612351578560ff168160ff1603612351578260010192505b50600101612300565b8360ff168260ff1614925050509392505050565b60006109088383612566565b600054610100900460ff166123a15760405162461bcd60e51b8152600401610ce390613066565b6113396125b0565b6000610908836001600160a01b03841661254e565b6000610908836001600160a01b038416612566565b60006109088383612409565b60008260000182815481106123f6576123f6612b7a565b9060005260206000200154905092915050565b600081815260018301602052604081205480156124f257600061242d600183612ebc565b855490915060009061244190600190612ebc565b90508181146124a657600086600001828154811061246157612461612b7a565b906000526020600020015490508087600001848154811061248457612484612b7a565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806124b7576124b76130b1565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610611565b6000915050610611565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60009081526001919091016020526040902054151590565b6000612572838361254e565b6125a857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610611565b506000610611565b600054610100900460ff166125d75760405162461bcd60e51b8152600401610ce390613066565b611339336122c4565b5080546125ec90612b46565b6000825580601f106125fc575050565b601f016020900490600052602060002090810190611c9a91905b8082111561262a5760008155600101612616565b5090565b6000806040838503121561264157600080fd5b50508035926020909101359150565b60005b8381101561266b578181015183820152602001612653565b50506000910152565b6000815180845261268c816020860160208601612650565b601f01601f19169290920160200192915050565b6020815260006109086020830184612674565b6020808252825182820181905260009190848201906040850190845b818110156126f45783516001600160a01b0316835292840192918401916001016126cf565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561273e5761273e612700565b604052919050565b60006001600160401b0382111561275f5761275f612700565b50601f01601f191660200190565b600082601f83011261277e57600080fd5b813561279161278c82612746565b612716565b8181528460208386010111156127a657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156127d857600080fd5b833592506020840135915060408401356001600160401b038111156127fc57600080fd5b6128088682870161276d565b9150509250925092565b80356001600160a01b038116811461282957600080fd5b919050565b60006020828403121561284057600080fd5b61090882612812565b6001600160a01b0391909116815260200190565b60008060006060848603121561287257600080fd5b61287b84612812565b925061288960208501612812565b915060408401356001600160e01b0319811681146128a657600080fd5b809150509250925092565b6000602082840312156128c357600080fd5b5035919050565b60006101008083526128de8184018c612674565b905082810360208401526128f2818b612674565b905062ffffff808a1660408501528382036060850152612912828a612674565b9150808816608085015283820360a085015261292e8288612674565b925085151560c085015280851660e085015250509998505050505050505050565b6000806040838503121561296257600080fd5b8235915060208301356001600160401b0381111561297f57600080fd5b61298b8582860161276d565b9150509250929050565b600080604083850312156129a857600080fd5b6129b183612812565b946020939093013593505050565b600080604083850312156129d257600080fd5b823591506129e260208401612812565b90509250929050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612a4057603f19888603018452612a2e858351612674565b94509285019290850190600101612a12565b5092979650505050505050565b60008060008060808587031215612a6357600080fd5b8435935060208501356001600160401b0380821115612a8157600080fd5b612a8d8883890161276d565b94506040870135915080821115612aa357600080fd5b612aaf8883890161276d565b93506060870135915080821115612ac557600080fd5b50612ad28782880161276d565b91505092959194509250565b600080600060608486031215612af357600080fd5b612afc84612812565b95602085013595506040909401359392505050565b600080600060608486031215612b2657600080fd5b8335925060208401359150612b3d60408501612812565b90509250925092565b600181811c90821680612b5a57607f821691505b6020821081036121a057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612bb857612bb8612b90565b5060010190565b601f821115612c0957600081815260208120601f850160051c81016020861015612be65750805b601f850160051c820191505b81811015612c0557828155600101612bf2565b5050505b505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115612c3c57612c3c612700565b612c5081612c4a8454612b46565b84612bbf565b602080601f831160018114612c7f5760008415612c6d5750858301515b612c778582612c0e565b865550612c05565b600085815260208120601f198616915b82811015612cae57888601518255948401946001909101908401612c8f565b5085821015612ccc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612cef6040830185612674565b90508260208301529392505050565b600060208284031215612d1057600080fd5b8151801515811461090857600080fd5b6000612d2e61278c84612746565b9050828152838383011115612d4257600080fd5b610908836020830184612650565b600082601f830112612d6157600080fd5b61090883835160208501612d20565b600080600060608486031215612d8557600080fd5b83516001600160401b0380821115612d9c57600080fd5b612da887838801612d50565b94506020860151915080821115612dbe57600080fd5b50612dcb86828701612d50565b925050604084015190509250925092565b62ffffff8181168382160190808211156106bf576106bf612b90565b600060208284031215612e0a57600080fd5b5051919050565b600060208284031215612e2357600080fd5b81516001600160401b03811115612e3957600080fd5b8201601f81018413612e4a57600080fd5b61164784825160208401612d20565b600060208284031215612e6b57600080fd5b81516001600160401b03811115612e8157600080fd5b61164784828501612d50565b62ffffff8281168282160390808211156106bf576106bf612b90565b8082018082111561061157610611612b90565b8181038181111561061157610611612b90565b818103612eda575050565b612ee48254612b46565b6001600160401b03811115612efb57612efb612700565b612f0981612c4a8454612b46565b6000601f821160018114612f375760008315612f255750848201545b612f2f8482612c0e565b855550612f9c565b600085815260209020601f19841690600086815260209020845b83811015612f715782860154825560019586019590910190602001612f51565b5085831015612f8f5781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b606081526000612fb66060830186612674565b8281036020840152612fc88186612674565b90508281036040840152612fdc8185612674565b9695505050505050565b6a600b5981380380925939f360a81b8152607f60f91b600b820152600c81018490526000602c8201819052606084901b6001600160601b0319166038830152825161303881604c850160208701612650565b91909101604c01949350505050565b600060ff821660ff810361305d5761305d612b90565b60010192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603160045260246000fdfef79e11fc86b9bf37d5dfd4359c053136f7c046da6a08f9cf7ca56d80d5aab839a2646970667358221220b96a0622d27a10bb89e881ac599099fe1d5de63ab3afef59e8def32cc4dca6b664736f6c63430008130033",
1101
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f25760003560e01c80638da5cb5b116101165780638da5cb5b146103d4578063a1a7a47b146103dc578063a809c1fc146103ef578063b86b69f114610402578063ba2285121461040a578063bbf2aefb1461041d578063bd880b4614610430578063be3d3ee614610443578063c0cd565f14610456578063c4d66de814610469578063caaa3bb71461047c578063cea2961a1461048f578063dbc71ccb146104a2578063dc33f4ae146104b5578063dfa3be53146104c8578063f0b99382146104db578063f146f17f146104ee578063f2fde38b14610501578063f73f499114610514578063f8ac18be14610527578063f9c0fae61461053a57600080fd5b8062e87903146101f757806307f9f786146102205780631376218614610235578063199eb8e01461024a5780631a051d491461025d5780631e9bef4614610270578063230448b11461029057806325ffb376146102b35780633bd7cfa2146102da5780633e76919a146102ed578063474bbdc2146103005780634bd1a38714610313578063518cb3df1461032657806351eda9991461033957806352ccc0211461034e5780635668bc5e146103615780635710f83d1461039e5780636dfa9f56146103b1578063715018a6146103c45780637cbb45c8146103cc575b600080fd5b61020a61020536600461262e565b61054d565b60405161021791906126a0565b60405180910390f35b610228610617565b60405161021791906126b3565b6102486102433660046127c3565b6106c6565b005b61024861025836600461282e565b610766565b61024861026b3660046127c3565b6107c1565b606554610283906001600160a01b031681565b6040516102179190612849565b6102a361029e36600461285d565b610861565b6040519015158152602001610217565b6102c66102c13660046128b1565b61090f565b6040516102179897969594939291906128ca565b6102486102e836600461294f565b610b26565b6102836102fb3660046128b1565b610b97565b61020a61030e366004612995565b610bb7565b6102486103213660046129bf565b610cf8565b61020a61033436600461262e565b610dbb565b610341610faa565b60405161021791906129eb565b61024861035c3660046128b1565b611069565b61039061036f3660046128b1565b600090815260686020526040902060060154600160301b900462ffffff1690565b604051908152602001610217565b6102486103ac36600461294f565b61117d565b6102486103bf36600461262e565b611235565b610248611327565b61039061133b565b61028361134c565b6102486103ea36600461262e565b611360565b6102486103fd366004612a4d565b61142e565b610390611573565b61039061041836600461262e565b61157f565b61024861042b366004612ade565b61164f565b61020a61043e3660046128b1565b6116d0565b61024861045136600461294f565b6116ee565b610248610464366004612b11565b611750565b61024861047736600461282e565b6117e0565b61024861048a3660046127c3565b6118fb565b6102a361049d36600461282e565b611994565b6102486104b036600461282e565b6119a1565b6102486104c336600461294f565b611a52565b6102836104d636600461262e565b611ae1565b61020a6104e936600461262e565b611b2a565b6102486104fc36600461294f565b611b73565b61024861050f36600461282e565b611c24565b610248610522366004612995565b611c9d565b6102486105353660046128b1565b611d6d565b61024861054836600461294f565b611ed7565b600082815260686020526040902060068101546060919061057490849062ffffff16611f3c565b60008381526001820160205260409020805461058f90612b46565b80601f01602080910402602001604051908101604052809291908181526020018280546105bb90612b46565b80156106085780601f106105dd57610100808354040283529160200191610608565b820191906000526020600020905b8154815290600101906020018083116105eb57829003601f168201915b50505050509150505b92915050565b606060006106256069611f80565b90506000816001600160401b0381111561064157610641612700565b60405190808252806020026020018201604052801561066a578160200160208202803683370190505b50905060005b828110156106bf57610683606982611f8a565b82828151811061069557610695612b7a565b6001600160a01b0390921660209283029190910190910152806106b781612ba6565b915050610670565b5092915050565b6106d66309bb10c360e11b611f96565b6106df81611fe6565b6106e883612035565b6000838152606860205260409020600681015461070b90849062ffffff16611f3c565b600083815260018201602052604090206107258382612c23565b50837f5f667fb1eaf23e0fee1a9dcc154d842202b184eb9ad83502c00c784808a8d00d8385604051610758929190612cdc565b60405180910390a250505050565b61077562ccf5c760e51b611f96565b61077e8161208c565b6107896069826120e1565b506040516001600160a01b038216907f2453d2f77bae1012d39e2257356d2566625ebe0ffd6094198aa051689dc65ba090600090a250565b6107d1631a051d4960e01b611f96565b6107da81611fe6565b6107e383612035565b6000838152606860205260409020600681015461080d908490600160301b900462ffffff16611f3c565b610816826120f6565b600084815260058301602052604080822080546001600160a01b0319166001600160a01b039490941693909317909255905185916000805160206130c883398151915291a250505050565b60008061086c61134c565b6001600160a01b03161415801561090557506065546040516217798b60e61b81526001600160a01b03868116600483015285811660248301526001600160e01b031985166044830152909116906305de62c0906064016020604051808303816000875af11580156108e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109059190612cfe565b90505b9392505050565b60008181526068602052604081206060918291829082908290829081906109358a6121a6565b60068201548254839162ffffff808216926002850192630100000081048316926004870192600160301b9092041680151591879061097290612b46565b80601f016020809104026020016040519081016040528092919081815260200182805461099e90612b46565b80156109eb5780601f106109c0576101008083540402835291602001916109eb565b820191906000526020600020905b8154815290600101906020018083116109ce57829003601f168201915b505050505096508480546109fe90612b46565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2a90612b46565b8015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050509450828054610a8a90612b46565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab690612b46565b8015610b035780601f10610ad857610100808354040283529160200191610b03565b820191906000526020600020905b815481529060010190602001808311610ae657829003601f168201915b505050505092509850985098509850985098509850985050919395975091939597565b610b36631debe7d160e11b611f96565b610b3f82612035565b6000828152606860205260409020600401610b5a8282612c23565b50817f9959f3af1c0191277b92c192984b5ca38adaf82d8465332b4da850e0e6a199f482604051610b8b91906126a0565b60405180910390a25050565b6000610bac82610ba76069611f80565b611f3c565b610611606983611f8a565b6060610bc28361208c565b6001600160a01b0383166000908152606b602090815260408083208584529091529020548015610bfd57610bf5816121a6565b915050610611565b604051633ae7357560e21b8152600481018490526001600160a01b0385169063eb9cd5d490602401600060405180830381865afa925050508015610c6357506040513d6000823e601f3d908101601f19168201604052610c609190810190612d70565b60015b610cec5760405162461bcd60e51b815260206004820152604960248201527f436f6e747261637420646f6573206e6f7420696d706c656d656e742070726f6a60448201527f65637453637269707444657461696c7320616e6420686173206e6f206f7665726064820152683934b2329039b2ba1760b91b608482015260a4015b60405180910390fd5b82945050505050610611565b610d08634bd1a38760e01b611f96565b610d1181612211565b610d1a82612035565b6000828152606860209081526040808320600681018054600160301b9081900462ffffff9081168752600584019095529290942080546001600160a01b0319166001600160a01b0387161790559254610d7892919004166001612ddc565b60068201805462ffffff92909216600160301b0262ffffff60301b1990921691909117905560405183906000805160206130c883398151915290600090a2505050565b6000828152606860205260409020600681015460609190610de9908490600160301b900462ffffff16611f3c565b600083815260058201602052604080822054905163cc31a33160e01b81526001600160a01b03909116919073__$55f4e50e6128becd8bf164b272db98df09$__9063cc31a33190610e3e908590600401612849565b602060405180830381865af4158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190612df8565b90507f554e4b4e4f574e5f56455253494f4e5f535452494e475f5f5f5f5f5f5f5f5f208103610f2e57604051632475d70960e01b815273__$55f4e50e6128becd8bf164b272db98df09$__90632475d70990610edf908590600401612849565b600060405180830381865af4158015610efc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f249190810190612e11565b9350505050610611565b604051630eacc5e760e31b815273__$55f4e50e6128becd8bf164b272db98df09$__906375662f3890610f65908590600401612849565b600060405180830381865af4158015610f82573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f249190810190612e59565b60606000610fb86066611f80565b6001600160401b03811115610fcf57610fcf612700565b60405190808252806020026020018201604052801561100257816020015b6060815260200190600190039081610fed5790505b50905060006110116066611f80565b905060005b818110156110615761103161102c606683611f8a565b6121a6565b83828151811061104357611043612b7a565b6020026020010181905250808061105990612ba6565b915050611016565b509092915050565b6110796352ccc02160e01b611f96565b61108281612035565b60008181526068602052604090206006810154600160301b900462ffffff166110ed5760405162461bcd60e51b815260206004820152601e60248201527f746865726520617265206e6f207363726970747320746f2072656d6f766500006044820152606401610ce3565b6006810154600582019060009061111290600190600160301b900462ffffff16612e8d565b62ffffff908116825260208201929092526040908101600090812080546001600160a01b031916905560068401805462ffffff60301b198116600160301b9182900486166000190190951602939093179092555183916000805160206130c883398151915291a25050565b61118d635710f83d60e01b611f96565b61119681611fe6565b61119f82612035565b600082815260686020908152604080832060068101546301000000900462ffffff168085526003820190935292206111d78482612c23565b506111e3816001612ea9565b8260060160036101000a81548162ffffff021916908362ffffff160217905550837ffe07adc986f904acd19c0f4f5d0716973976f0450de010a753a52d119ddadbde8483604051610758929190612cdc565b6112456336fd4fab60e11b611f96565b61124e82612035565b600082815260686020526040902060068101546301000000900462ffffff166112778382611f3c565b6000611284600183612ebc565b6000868152606860209081526040808320848452600390810183528184208985529088019092529091209192506112bb9082612ecf565b50600081815260038401602052604081206112d5916125e0565b60068301805465ffffff0000001916630100000062ffffff841602179055604051849086907fc02725dfc9639e3399432cdae3db1c062229f4cc41bcc18631517617c020b71c90600090a35050505050565b61132f612265565b61133960006122c4565b565b60006113476066611f80565b905090565b60006113476033546001600160a01b031690565b61137063a1a7a47b60e01b611f96565b61137982612035565b6000828152606860205260409020600681015462ffffff1661139b8382611f3c565b60006113a8600183612ebc565b600081815260018501602052604080822087835291209192506113cb9082612ecf565b50600081815260018401602052604081206113e5916125e0565b60068301805462ffffff191662ffffff8316179055604051849086907f225454b600cf489553fde6e3b7f5e458b1093c035390b678067ea799b3b016cd90600090a35050505050565b61143e632a02707f60e21b611f96565b6114496066856122ef565b156114965760405162461bcd60e51b815260206004820152601e60248201527f446570656e64656e6379207479706520616c72656164792065786973747300006044820152606401610ce3565b6114a384604060016122fb565b6114ec5760405162461bcd60e51b815260206004820152601a60248201527901b5d5cdd0818dbdb9d185a5b88195e1858dd1b1e481bdb9948160361b6044820152606401610ce3565b6114f760668561236e565b506000848152606860205260409020806115118582612c23565b50600281016115208482612c23565b506004810161152f8382612c23565b50847f39626dd6a5a74e9944752116c5e878fbb4c1ac0cab72cd316f6f25ee19cff76585858560405161156493929190612fa3565b60405180910390a25050505050565b60006113476069611f80565b600082815260686020526040812060068101546115a9908490600160301b900462ffffff16611f3c565b60008481526068602090815260408083208684526005019091529081902054905163cc31a33160e01b815273__$55f4e50e6128becd8bf164b272db98df09$__9163cc31a33191611606916001600160a01b031690600401612849565b602060405180830381865af4158015611623573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116479190612df8565b949350505050565b61165f63bbf2aefb60e01b611f96565b61166881612035565b6116718361208c565b6001600160a01b0383166000818152606b6020908152604080832086845282529182902084905590518381528492917f27d39273f3676c181ec3de60b583da776123d9f9517761fb91f370a83c798918910160405180910390a3505050565b60606116e082610ba76066611f80565b61061161102c606684611f8a565b6116fe635f1e9f7360e11b611f96565b61170782612035565b600082815260686020526040902061171f8282612c23565b50817fc9890a31ec780bb5a8a017d683d3913f97260548d71c2cee78194ed2833f023582604051610b8b91906126a0565b61176063c0cd565f60e01b611f96565b61176981612211565b61177283612035565b6000838152606860205260409020600681015461179c908490600160301b900462ffffff16611f3c565b600083815260058201602052604080822080546001600160a01b0319166001600160a01b0386161790555185916000805160206130c883398151915291a250505050565b600054610100900460ff16158080156118005750600054600160ff909116105b8061181a5750303b15801561181a575060005460ff166001145b61187d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ce3565b6000805460ff1916600117905580156118a0576000805461ff0019166101001790555b6118a861237a565b6118b1826122c4565b80156118f7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b61190b63caaa3bb760e01b611f96565b61191481611fe6565b61191d83612035565b600083815260686020526040902060068101546119479084906301000000900462ffffff16611f3c565b600083815260038201602052604090206119618382612c23565b50837ffe07adc986f904acd19c0f4f5d0716973976f0450de010a753a52d119ddadbde8385604051610758929190612cdc565b60006106116069836123a9565b6119b163dbc71ccb60e01b611f96565b6119ba81612211565b6119c56069826123a9565b15611a0f5760405162461bcd60e51b815260206004820152601a60248201527910dbdb9d1c9858dd08185b1c9958591e481cdd5c1c1bdc9d195960321b6044820152606401610ce3565b611a1a6069826123be565b506040516001600160a01b038216907f59e1b889b92ad05213b7934a67c5d824348c868455d1c741a2cfe16e46d832dc90600090a250565b611a62636e19fa5760e11b611f96565b611a6b81611fe6565b611a7482612035565b6000828152606860205260409020611a8b826120f6565b600682018054600160301b9081900462ffffff9081166000908152600586016020526040902080546001600160a01b0319166001600160a01b0395909516949094179093559054610d7892919004166001612ddc565b60008281526068602052604081206006810154611b0b908490600160301b900462ffffff16611f3c565b60009283526005016020525060409020546001600160a01b0316919050565b6000828152606860205260409020600681015460609190611b589084906301000000900462ffffff16611f3c565b60008381526003820160205260409020805461058f90612b46565b611b8363f146f17f60e01b611f96565b611b8c81611fe6565b611b9582612035565b6000828152606860209081526040808320600681015462ffffff16808552600182019093529220611bc68482612c23565b50611bd2816001612ea9565b8260060160006101000a81548162ffffff021916908362ffffff160217905550837f5f667fb1eaf23e0fee1a9dcc154d842202b184eb9ad83502c00c784808a8d00d8483604051610758929190612cdc565b611c2c612265565b6001600160a01b038116611c915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ce3565b611c9a816122c4565b50565b611cad63f73f499160e01b611f96565b6001600160a01b0382166000908152606b60209081526040808320848452909152902054611d1b5760405162461bcd60e51b815260206004820152601b60248201527a139bc81bdd995c9c9a5919481cd95d08199bdc881c1c9bda9958dd602a1b6044820152606401610ce3565b6001600160a01b0382166000818152606b60209081526040808320858452909152808220829055518392917f0732620824c0200808d04ab037f3abc3c31853170b90f5a855d32f44486048ed91a35050565b611d7d637c560c5f60e11b611f96565b611d8681612035565b6000818152606860205260409020600681015462ffffff16158015611db9575060068101546301000000900462ffffff16155b8015611dd357506006810154600160301b900462ffffff16155b611e555760405162461bcd60e51b815260206004820152604760248201527f43616e6e6f742072656d6f766520646570656e64656e6379207769746820616460448201527f646974696f6e616c2043444e732c207265706f7369746f726965732c206f72206064820152667363726970747360c81b608482015260a401610ce3565b611e606066836123d3565b50600082815260686020526040812090611e7a82826125e0565b611e886002830160006125e0565b611e966004830160006125e0565b5060060180546001600160481b031916905560405182907f60e2aa021c4f5303dd65e2173f0180636e4d42eaefc6187278e92bee9d06aa7290600090a25050565b611ee7637ce07d7360e11b611f96565b611ef082612035565b6000828152606860205260409020600201611f0b8282612c23565b50817f774918414e4887efe5349a305fe253ee8b1e3fe0c2117012f0c215645693cbfd82604051610b8b91906126a0565b8082106118f75760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b6044820152606401610ce3565b6000610611825490565b600061090883836123df565b611fa1333083610861565b611c9a5760405162461bcd60e51b815260206004820152601660248201527513db9b1e4810591b5a5b881050d308185b1b1bddd95960521b6044820152606401610ce3565b8051600003611c9a5760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d656d70747920737472696e6760281b6044820152606401610ce3565b6120406066826122ef565b611c9a5760405162461bcd60e51b815260206004820152601e60248201527f446570656e64656e6379207479706520646f6573206e6f7420657869737400006044820152606401610ce3565b6120976069826123a9565b611c9a5760405162461bcd60e51b815260206004820152601b60248201527a10dbdc994818dbdb9d1c9858dd081b9bdd081cdd5c1c1bdc9d1959602a1b6044820152606401610ce3565b6000610908836001600160a01b038416612409565b6000807f42797465636f646553746f726167655f56312e302e305f5f5f5f5f5f5f5f5f20308460405160200161212e93929190612fe6565b60405160208183030381529060405290508051602082016000f091506001600160a01b0382166121a05760405162461bcd60e51b815260206004820152601e60248201527f436f6e7472616374417353746f726167653a205772697465204572726f7200006044820152606401610ce3565b50919050565b606060005b828160ff16602081106121c0576121c0612b7a565b1a60f81b6001600160f81b031916158015906121df575060208160ff16105b156121f657806121ee81613047565b9150506121ab565b60405191506040820160405280825282602083015250919050565b6001600160a01b038116611c9a5760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d7a65726f206164647265737360281b6044820152606401610ce3565b3361226e61134c565b6001600160a01b0316146113395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ce3565b6122cd816124fc565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610908838361254e565b600080805b60208160ff16101561235a576000868260ff166020811061232357612323612b7a565b1a90508015801590612338575060808160ff16105b15612351578560ff168160ff1603612351578260010192505b50600101612300565b8360ff168260ff1614925050509392505050565b60006109088383612566565b600054610100900460ff166123a15760405162461bcd60e51b8152600401610ce390613066565b6113396125b0565b6000610908836001600160a01b03841661254e565b6000610908836001600160a01b038416612566565b60006109088383612409565b60008260000182815481106123f6576123f6612b7a565b9060005260206000200154905092915050565b600081815260018301602052604081205480156124f257600061242d600183612ebc565b855490915060009061244190600190612ebc565b90508181146124a657600086600001828154811061246157612461612b7a565b906000526020600020015490508087600001848154811061248457612484612b7a565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806124b7576124b76130b1565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610611565b6000915050610611565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60009081526001919091016020526040902054151590565b6000612572838361254e565b6125a857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610611565b506000610611565b600054610100900460ff166125d75760405162461bcd60e51b8152600401610ce390613066565b611339336122c4565b5080546125ec90612b46565b6000825580601f106125fc575050565b601f016020900490600052602060002090810190611c9a91905b8082111561262a5760008155600101612616565b5090565b6000806040838503121561264157600080fd5b50508035926020909101359150565b60005b8381101561266b578181015183820152602001612653565b50506000910152565b6000815180845261268c816020860160208601612650565b601f01601f19169290920160200192915050565b6020815260006109086020830184612674565b6020808252825182820181905260009190848201906040850190845b818110156126f45783516001600160a01b0316835292840192918401916001016126cf565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561273e5761273e612700565b604052919050565b60006001600160401b0382111561275f5761275f612700565b50601f01601f191660200190565b600082601f83011261277e57600080fd5b813561279161278c82612746565b612716565b8181528460208386010111156127a657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156127d857600080fd5b833592506020840135915060408401356001600160401b038111156127fc57600080fd5b6128088682870161276d565b9150509250925092565b80356001600160a01b038116811461282957600080fd5b919050565b60006020828403121561284057600080fd5b61090882612812565b6001600160a01b0391909116815260200190565b60008060006060848603121561287257600080fd5b61287b84612812565b925061288960208501612812565b915060408401356001600160e01b0319811681146128a657600080fd5b809150509250925092565b6000602082840312156128c357600080fd5b5035919050565b60006101008083526128de8184018c612674565b905082810360208401526128f2818b612674565b905062ffffff808a1660408501528382036060850152612912828a612674565b9150808816608085015283820360a085015261292e8288612674565b925085151560c085015280851660e085015250509998505050505050505050565b6000806040838503121561296257600080fd5b8235915060208301356001600160401b0381111561297f57600080fd5b61298b8582860161276d565b9150509250929050565b600080604083850312156129a857600080fd5b6129b183612812565b946020939093013593505050565b600080604083850312156129d257600080fd5b823591506129e260208401612812565b90509250929050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612a4057603f19888603018452612a2e858351612674565b94509285019290850190600101612a12565b5092979650505050505050565b60008060008060808587031215612a6357600080fd5b8435935060208501356001600160401b0380821115612a8157600080fd5b612a8d8883890161276d565b94506040870135915080821115612aa357600080fd5b612aaf8883890161276d565b93506060870135915080821115612ac557600080fd5b50612ad28782880161276d565b91505092959194509250565b600080600060608486031215612af357600080fd5b612afc84612812565b95602085013595506040909401359392505050565b600080600060608486031215612b2657600080fd5b8335925060208401359150612b3d60408501612812565b90509250925092565b600181811c90821680612b5a57607f821691505b6020821081036121a057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612bb857612bb8612b90565b5060010190565b601f821115612c0957600081815260208120601f850160051c81016020861015612be65750805b601f850160051c820191505b81811015612c0557828155600101612bf2565b5050505b505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115612c3c57612c3c612700565b612c5081612c4a8454612b46565b84612bbf565b602080601f831160018114612c7f5760008415612c6d5750858301515b612c778582612c0e565b865550612c05565b600085815260208120601f198616915b82811015612cae57888601518255948401946001909101908401612c8f565b5085821015612ccc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612cef6040830185612674565b90508260208301529392505050565b600060208284031215612d1057600080fd5b8151801515811461090857600080fd5b6000612d2e61278c84612746565b9050828152838383011115612d4257600080fd5b610908836020830184612650565b600082601f830112612d6157600080fd5b61090883835160208501612d20565b600080600060608486031215612d8557600080fd5b83516001600160401b0380821115612d9c57600080fd5b612da887838801612d50565b94506020860151915080821115612dbe57600080fd5b50612dcb86828701612d50565b925050604084015190509250925092565b62ffffff8181168382160190808211156106bf576106bf612b90565b600060208284031215612e0a57600080fd5b5051919050565b600060208284031215612e2357600080fd5b81516001600160401b03811115612e3957600080fd5b8201601f81018413612e4a57600080fd5b61164784825160208401612d20565b600060208284031215612e6b57600080fd5b81516001600160401b03811115612e8157600080fd5b61164784828501612d50565b62ffffff8281168282160390808211156106bf576106bf612b90565b8082018082111561061157610611612b90565b8181038181111561061157610611612b90565b818103612eda575050565b612ee48254612b46565b6001600160401b03811115612efb57612efb612700565b612f0981612c4a8454612b46565b6000601f821160018114612f375760008315612f255750848201545b612f2f8482612c0e565b855550612f9c565b600085815260209020601f19841690600086815260209020845b83811015612f715782860154825560019586019590910190602001612f51565b5085831015612f8f5781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b606081526000612fb66060830186612674565b8281036020840152612fc88186612674565b90508281036040840152612fdc8185612674565b9695505050505050565b6a600b5981380380925939f360a81b8152607f60f91b600b820152600c81018490526000602c8201819052606084901b6001600160601b0319166038830152825161303881604c850160208701612650565b91909101604c01949350505050565b600060ff821660ff810361305d5761305d612b90565b60010192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603160045260246000fdfef79e11fc86b9bf37d5dfd4359c053136f7c046da6a08f9cf7ca56d80d5aab839a2646970667358221220b96a0622d27a10bb89e881ac599099fe1d5de63ab3afef59e8def32cc4dca6b664736f6c63430008130033",
1187
+ "bytecode": "0x608060405234801561001057600080fd5b50613417806100206000396000f3fe608060405234801561001057600080fd5b506004361061021e5760003560e01c8063a1a7a47b1161012c578063a1a7a47b1461041c578063b86b69f11461042f578063ba22851214610437578063bbf2aefb1461044a578063bd880b461461045d578063be3d3ee614610470578063c073927014610483578063c0cd565f14610496578063c4d66de8146104a9578063caaa3bb7146104bc578063cc86ba4b146104cf578063cea2961a146104e2578063dbc71ccb146104f5578063dc33f4ae14610508578063dfa3be531461051b578063f0b993821461052e578063f146f17f14610541578063f2fde38b14610554578063f73f499114610567578063f8ac18be1461057a578063f9c0fae61461058d578063fb5cd19b146105a0578063fed37e82146105a857600080fd5b8062e879031461022357806307f9f7861461024c5780631376218614610261578063199eb8e0146102765780631a051d49146102895780631e9bef461461029c578063230448b1146102bc57806325ffb376146102df5780633bd7cfa2146103075780633e76919a1461031a578063474bbdc21461032d5780634bd1a38714610340578063518cb3df1461035357806351eda9991461036657806352ccc0211461037b5780635668bc5e1461038e5780635710f83d146103cb57806366d549a1146103de5780636dfa9f56146103f1578063715018a6146104045780637cbb45c81461040c5780638da5cb5b14610414575b600080fd5b610236610231366004612908565b6105b0565b604051610243919061297a565b60405180910390f35b61025461067a565b604051610243919061298d565b61027461026f366004612a9d565b610729565b005b610274610284366004612b08565b6107c9565b610274610297366004612a9d565b61087f565b6065546102af906001600160a01b031681565b6040516102439190612b23565b6102cf6102ca366004612b37565b61091f565b6040519015158152602001610243565b6102f26102ed366004612b8b565b6109cd565b60405161024399989796959493929190612ba4565b610274610315366004612c3f565b610c01565b6102af610328366004612b8b565b610c72565b61023661033b366004612c85565b610c92565b61027461034e366004612caf565b610dce565b610236610361366004612908565b610e91565b61036e611080565b6040516102439190612cdb565b610274610389366004612b8b565b61112e565b6103bd61039c366004612b8b565b600090815260686020526040902060070154600160301b900462ffffff1690565b604051908152602001610243565b6102746103d9366004612c3f565b611242565b6102746103ec366004612d3d565b6112fa565b6102746103ff366004612908565b611443565b610274611535565b6103bd611549565b6102af61155a565b61027461042a366004612908565b61156e565b6103bd61163c565b6103bd610445366004612908565b611648565b610274610458366004612dd8565b611718565b61023661046b366004612b8b565b611799565b61027461047e366004612c3f565b6117b7565b610274610491366004612b8b565b61181c565b6102746104a4366004612e0b565b611908565b6102746104b7366004612b08565b611998565b6102746104ca366004612a9d565b611ab3565b6102366104dd366004612b8b565b611b4c565b6102cf6104f0366004612b08565b611b6a565b610274610503366004612b08565b611b77565b610274610516366004612c3f565b611c1b565b6102af610529366004612908565b611caa565b61023661053c366004612908565b611cf3565b61027461054f366004612c3f565b611d3c565b610274610562366004612b08565b611ded565b610274610575366004612c85565b611e66565b610274610588366004612b8b565b611f36565b61027461059b366004612c3f565b6120a6565b61036e61210b565b6103bd6121b4565b60008281526068602052604090206007810154606091906105d790849062ffffff166121c0565b6000838152600282016020526040902080546105f290612e40565b80601f016020809104026020016040519081016040528092919081815260200182805461061e90612e40565b801561066b5780601f106106405761010080835404028352916020019161066b565b820191906000526020600020905b81548152906001019060200180831161064e57829003601f168201915b50505050509150505b92915050565b60606000610688606b612204565b90506000816001600160401b038111156106a4576106a46129da565b6040519080825280602002602001820160405280156106cd578160200160208202803683370190505b50905060005b82811015610722576106e6606b8261220e565b8282815181106106f8576106f8612e74565b6001600160a01b03909216602092830291909101909101528061071a81612ea0565b9150506106d3565b5092915050565b6107396309bb10c360e11b61221a565b6107428161226a565b61074b836122b9565b6000838152606860205260409020600781015461076e90849062ffffff166121c0565b600083815260028201602052604090206107888382612f1d565b50837f5f667fb1eaf23e0fee1a9dcc154d842202b184eb9ad83502c00c784808a8d00d83856040516107bb929190612fd6565b60405180910390a250505050565b6107d862ccf5c760e51b61221a565b6107e3606b82612310565b6108485760405162461bcd60e51b815260206004820152602b60248201527f436f726520636f6e747261637420616c72656164792072656d6f766564206f7260448201526a081b9bdd081a5b881cd95d60aa1b60648201526084015b60405180910390fd5b6040516001600160a01b038216907f2453d2f77bae1012d39e2257356d2566625ebe0ffd6094198aa051689dc65ba090600090a250565b61088f631a051d4960e01b61221a565b6108988161226a565b6108a1836122b9565b600083815260686020526040902060078101546108cb908490600160301b900462ffffff166121c0565b6108d482612325565b600084815260068301602052604080822080546001600160a01b0319166001600160a01b039490941693909317909255905185916000805160206133c283398151915291a250505050565b60008061092a61155a565b6001600160a01b0316141580156109c357506065546040516217798b60e61b81526001600160a01b03868116600483015285811660248301526001600160e01b031985166044830152909116906305de62c0906064016020604051808303816000875af115801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c39190612ff8565b90505b9392505050565b606080606060006060600060606000806000606860008c815260200190815260200160002090506109fd8b6123d5565b8154610a08906123d5565b6007830154600184018054909162ffffff8082169260038801926301000000810483169260058a0192600160301b90920416801515918790610a4990612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7590612e40565b8015610ac25780601f10610a9757610100808354040283529160200191610ac2565b820191906000526020600020905b815481529060010190602001808311610aa557829003601f168201915b50505050509650848054610ad590612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0190612e40565b8015610b4e5780601f10610b2357610100808354040283529160200191610b4e565b820191906000526020600020905b815481529060010190602001808311610b3157829003601f168201915b50505050509450828054610b6190612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90612e40565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b50505050509250995099509950995099509950995099509950509193959799909294969850565b610c11631debe7d160e11b61221a565b610c1a826122b9565b6000828152606860205260409020600501610c358282612f1d565b50817f9959f3af1c0191277b92c192984b5ca38adaf82d8465332b4da850e0e6a199f482604051610c66919061297a565b60405180910390a25050565b6000610c8782610c82606b612204565b6121c0565b610674606b8361220e565b6060610c9d83612440565b6001600160a01b0383166000908152606d602090815260408083208584529091529020548015610cd857610cd0816123d5565b915050610674565b604051633ae7357560e21b8152600481018490526001600160a01b0385169063eb9cd5d490602401600060405180830381865afa925050508015610d3e57506040513d6000823e601f3d908101601f19168201604052610d3b919081019061306a565b60015b610dc25760405162461bcd60e51b815260206004820152604960248201527f436f6e747261637420646f6573206e6f7420696d706c656d656e742070726f6a60448201527f65637453637269707444657461696c7320616e6420686173206e6f206f7665726064820152683934b2329039b2ba1760b91b608482015260a40161083f565b82945050505050610674565b610dde634bd1a38760e01b61221a565b610de781612495565b610df0826122b9565b6000828152606860209081526040808320600781018054600160301b9081900462ffffff9081168752600684019095529290942080546001600160a01b0319166001600160a01b0387161790559254610e4e929190041660016130d6565b60078201805462ffffff92909216600160301b0262ffffff60301b1990921691909117905560405183906000805160206133c283398151915290600090a2505050565b6000828152606860205260409020600781015460609190610ebf908490600160301b900462ffffff166121c0565b600083815260068201602052604080822054905163cc31a33160e01b81526001600160a01b03909116919073__$55f4e50e6128becd8bf164b272db98df09$__9063cc31a33190610f14908590600401612b23565b602060405180830381865af4158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5591906130f2565b90507f554e4b4e4f574e5f56455253494f4e5f535452494e475f5f5f5f5f5f5f5f5f20810361100457604051632475d70960e01b815273__$55f4e50e6128becd8bf164b272db98df09$__90632475d70990610fb5908590600401612b23565b600060405180830381865af4158015610fd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffa919081019061310b565b9350505050610674565b604051630eacc5e760e31b815273__$55f4e50e6128becd8bf164b272db98df09$__906375662f389061103b908590600401612b23565b600060405180830381865af4158015611058573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffa9190810190613153565b6060600061108e6066612204565b90506000816001600160401b038111156110aa576110aa6129da565b6040519080825280602002602001820160405280156110dd57816020015b60608152602001906001900390816110c85790505b50905060005b82811015610722576110fe6110f960668361220e565b6123d5565b82828151811061111057611110612e74565b6020026020010181905250808061112690612ea0565b9150506110e3565b61113e6352ccc02160e01b61221a565b611147816122b9565b60008181526068602052604090206007810154600160301b900462ffffff166111b25760405162461bcd60e51b815260206004820152601e60248201527f746865726520617265206e6f207363726970747320746f2072656d6f76650000604482015260640161083f565b600781015460068201906000906111d790600190600160301b900462ffffff16613187565b62ffffff908116825260208201929092526040908101600090812080546001600160a01b031916905560078401805462ffffff60301b198116600160301b9182900486166000190190951602939093179092555183916000805160206133c283398151915291a25050565b611252635710f83d60e01b61221a565b61125b8161226a565b611264826122b9565b600082815260686020908152604080832060078101546301000000900462ffffff1680855260048201909352922061129c8482612f1d565b506112a88160016131a3565b8260070160036101000a81548162ffffff021916908362ffffff160217905550837ffe07adc986f904acd19c0f4f5d0716973976f0450de010a753a52d119ddadbde84836040516107bb929190612fd6565b61130a6366d549a160e01b61221a565b611313846124e9565b611320856040600161253e565b6113695760405162461bcd60e51b815260206004820152601a60248201527901b5d5cdd0818dbdb9d185a5b88195e1858dd1b1e481bdb9948160361b604482015260640161083f565b6113746066866125b2565b6113c05760405162461bcd60e51b815260206004820152601e60248201527f446570656e64656e6379207479706520616c7265616479206578697374730000604482015260640161083f565b6000858152606860205260409020848155600181016113df8582612f1d565b50600381016113ee8482612f1d565b50600581016113fd8382612f1d565b5084867f14d15ecf0e955bdd7a921efba642deef4d718696d3fc369454c84817fed0fb77868686604051611433939291906131b6565b60405180910390a3505050505050565b6114536336fd4fab60e11b61221a565b61145c826122b9565b600082815260686020526040902060078101546301000000900462ffffff1661148583826121c0565b60006114926001836131f9565b6000868152606860209081526040808320848452600490810183528184208985529088019092529091209192506114c9908261320c565b50600081815260048401602052604081206114e3916128ba565b60078301805465ffffff0000001916630100000062ffffff841602179055604051849086907fc02725dfc9639e3399432cdae3db1c062229f4cc41bcc18631517617c020b71c90600090a35050505050565b61153d6125be565b611547600061261d565b565b60006115556066612204565b905090565b60006115556033546001600160a01b031690565b61157e63a1a7a47b60e01b61221a565b611587826122b9565b6000828152606860205260409020600781015462ffffff166115a983826121c0565b60006115b66001836131f9565b600081815260028501602052604080822087835291209192506115d9908261320c565b50600081815260028401602052604081206115f3916128ba565b60078301805462ffffff191662ffffff8316179055604051849086907f225454b600cf489553fde6e3b7f5e458b1093c035390b678067ea799b3b016cd90600090a35050505050565b6000611555606b612204565b60008281526068602052604081206007810154611672908490600160301b900462ffffff166121c0565b60008481526068602090815260408083208684526006019091529081902054905163cc31a33160e01b815273__$55f4e50e6128becd8bf164b272db98df09$__9163cc31a331916116cf916001600160a01b031690600401612b23565b602060405180830381865af41580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171091906130f2565b949350505050565b61172863bbf2aefb60e01b61221a565b611731816122b9565b61173a83612440565b6001600160a01b0383166000818152606d6020908152604080832086845282529182902084905590518381528492917f27d39273f3676c181ec3de60b583da776123d9f9517761fb91f370a83c798918910160405180910390a3505050565b60606117a982610c826066612204565b6106746110f960668461220e565b6117c7635f1e9f7360e11b61221a565b6117d0826122b9565b60008281526068602052604090206001016117eb8282612f1d565b50817fc9890a31ec780bb5a8a017d683d3913f97260548d71c2cee78194ed2833f023582604051610c66919061297a565b61182c630c07392760e41b61221a565b6118376069826125b2565b6118815760405162461bcd60e51b815260206004820152601b60248201527a4c6963656e7365207479706520616c72656164792065786973747360281b604482015260640161083f565b806118da5760405162461bcd60e51b815260206004820152602360248201527f4c6963656e736520747970652063616e6e6f7420626520656d70747920737472604482015262696e6760e81b606482015260840161083f565b60405181907fad5dcce4588345db351371d105540f3fb69966f418d923539f19d5f44a1cfc4b90600090a250565b61191863c0cd565f60e01b61221a565b61192181612495565b61192a836122b9565b60008381526068602052604090206007810154611954908490600160301b900462ffffff166121c0565b600083815260068201602052604080822080546001600160a01b0319166001600160a01b0386161790555185916000805160206133c283398151915291a250505050565b600054610100900460ff16158080156119b85750600054600160ff909116105b806119d25750303b1580156119d2575060005460ff166001145b611a355760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161083f565b6000805460ff191660011790558015611a58576000805461ff0019166101001790555b611a60612648565b611a698261261d565b8015611aaf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b611ac363caaa3bb760e01b61221a565b611acc8161226a565b611ad5836122b9565b60008381526068602052604090206007810154611aff9084906301000000900462ffffff166121c0565b60008381526004820160205260409020611b198382612f1d565b50837ffe07adc986f904acd19c0f4f5d0716973976f0450de010a753a52d119ddadbde83856040516107bb929190612fd6565b6060611b5c82610c826069612204565b6106746110f960698461220e565b6000610674606b83612677565b611b8763dbc71ccb60e01b61221a565b611b9081612495565b611b9b606b8261268c565b611be45760405162461bcd60e51b815260206004820152601a60248201527910dbdb9d1c9858dd08185b1c9958591e481cdd5c1c1bdc9d195960321b604482015260640161083f565b6040516001600160a01b038216907f59e1b889b92ad05213b7934a67c5d824348c868455d1c741a2cfe16e46d832dc90600090a250565b611c2b636e19fa5760e11b61221a565b611c348161226a565b611c3d826122b9565b6000828152606860205260409020611c5482612325565b600782018054600160301b9081900462ffffff9081166000908152600686016020526040902080546001600160a01b0319166001600160a01b0395909516949094179093559054610e4e929190041660016130d6565b60008281526068602052604081206007810154611cd4908490600160301b900462ffffff166121c0565b60009283526006016020525060409020546001600160a01b0316919050565b6000828152606860205260409020600781015460609190611d219084906301000000900462ffffff166121c0565b6000838152600482016020526040902080546105f290612e40565b611d4c63f146f17f60e01b61221a565b611d558161226a565b611d5e826122b9565b6000828152606860209081526040808320600781015462ffffff16808552600282019093529220611d8f8482612f1d565b50611d9b8160016131a3565b8260070160006101000a81548162ffffff021916908362ffffff160217905550837f5f667fb1eaf23e0fee1a9dcc154d842202b184eb9ad83502c00c784808a8d00d84836040516107bb929190612fd6565b611df56125be565b6001600160a01b038116611e5a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161083f565b611e638161261d565b50565b611e7663f73f499160e01b61221a565b6001600160a01b0382166000908152606d60209081526040808320848452909152902054611ee45760405162461bcd60e51b815260206004820152601b60248201527a139bc81bdd995c9c9a5919481cd95d08199bdc881c1c9bda9958dd602a1b604482015260640161083f565b6001600160a01b0382166000818152606d60209081526040808320858452909152808220829055518392917f0732620824c0200808d04ab037f3abc3c31853170b90f5a855d32f44486048ed91a35050565b611f46637c560c5f60e11b61221a565b611f4f816122b9565b6000818152606860205260409020600781015462ffffff16158015611f82575060078101546301000000900462ffffff16155b8015611f9c57506007810154600160301b900462ffffff16155b61201e5760405162461bcd60e51b815260206004820152604760248201527f43616e6e6f742072656d6f766520646570656e64656e6379207769746820616460448201527f646974696f6e616c2043444e732c207265706f7369746f726965732c206f72206064820152667363726970747360c81b608482015260a40161083f565b6120296066836126a1565b5060008281526068602052604081208181559061204960018301826128ba565b6120576003830160006128ba565b6120656005830160006128ba565b5060070180546001600160481b031916905560405182907f60e2aa021c4f5303dd65e2173f0180636e4d42eaefc6187278e92bee9d06aa7290600090a25050565b6120b6637ce07d7360e11b61221a565b6120bf826122b9565b60008281526068602052604090206003016120da8282612f1d565b50817f774918414e4887efe5349a305fe253ee8b1e3fe0c2117012f0c215645693cbfd82604051610c66919061297a565b606060006121196069612204565b90506000816001600160401b03811115612135576121356129da565b60405190808252806020026020018201604052801561216857816020015b60608152602001906001900390816121535790505b50905060005b82811015610722576121846110f960698361220e565b82828151811061219657612196612e74565b602002602001018190525080806121ac90612ea0565b91505061216e565b60006115556069612204565b808210611aaf5760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b604482015260640161083f565b6000610674825490565b60006109c683836126ad565b61222533308361091f565b611e635760405162461bcd60e51b815260206004820152601660248201527513db9b1e4810591b5a5b881050d308185b1b1bddd95960521b604482015260640161083f565b8051600003611e635760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d656d70747920737472696e6760281b604482015260640161083f565b6122c46066826126d7565b611e635760405162461bcd60e51b815260206004820152601e60248201527f446570656e64656e6379207479706520646f6573206e6f742065786973740000604482015260640161083f565b60006109c6836001600160a01b0384166126e3565b6000807f42797465636f646553746f726167655f56312e302e305f5f5f5f5f5f5f5f5f20308460405160200161235d939291906132e0565b60405160208183030381529060405290508051602082016000f091506001600160a01b0382166123cf5760405162461bcd60e51b815260206004820152601e60248201527f436f6e7472616374417353746f726167653a205772697465204572726f720000604482015260640161083f565b50919050565b606060005b828160ff16602081106123ef576123ef612e74565b1a60f81b6001600160f81b0319161580159061240e575060208160ff16105b15612425578061241d81613341565b9150506123da565b60405191506040820160405280825282602083015250919050565b61244b606b82612677565b611e635760405162461bcd60e51b815260206004820152601b60248201527a10dbdc994818dbdb9d1c9858dd081b9bdd081cdd5c1c1bdc9d1959602a1b604482015260640161083f565b6001600160a01b038116611e635760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d7a65726f206164647265737360281b604482015260640161083f565b6124f46069826126d7565b611e635760405162461bcd60e51b815260206004820152601b60248201527a131a58d95b9cd9481d1e5c1948191bd95cc81b9bdd08195e1a5cdd602a1b604482015260640161083f565b60008060005b60208160ff16101561259e576000868260ff166020811061256757612567612e74565b1a9050801580159061257c575060808160ff16105b15612595578560ff168160ff1603612595578260010192505b50600101612544565b8360ff168260ff1614925050509392505050565b60006109c683836127d6565b336125c761155a565b6001600160a01b0316146115475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083f565b61262681612820565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661266f5760405162461bcd60e51b815260040161083f90613360565b611547612872565b60006109c6836001600160a01b0384166128a2565b60006109c6836001600160a01b0384166127d6565b60006109c683836126e3565b60008260000182815481106126c4576126c4612e74565b9060005260206000200154905092915050565b60006109c683836128a2565b600081815260018301602052604081205480156127cc5760006127076001836131f9565b855490915060009061271b906001906131f9565b905081811461278057600086600001828154811061273b5761273b612e74565b906000526020600020015490508087600001848154811061275e5761275e612e74565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612791576127916133ab565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610674565b6000915050610674565b60006127e283836128a2565b61281857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610674565b506000610674565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166128995760405162461bcd60e51b815260040161083f90613360565b6115473361261d565b60009081526001919091016020526040902054151590565b5080546128c690612e40565b6000825580601f106128d6575050565b601f016020900490600052602060002090810190611e6391905b8082111561290457600081556001016128f0565b5090565b6000806040838503121561291b57600080fd5b50508035926020909101359150565b60005b8381101561294557818101518382015260200161292d565b50506000910152565b6000815180845261296681602086016020860161292a565b601f01601f19169290920160200192915050565b6020815260006109c6602083018461294e565b6020808252825182820181905260009190848201906040850190845b818110156129ce5783516001600160a01b0316835292840192918401916001016129a9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612a1857612a186129da565b604052919050565b60006001600160401b03821115612a3957612a396129da565b50601f01601f191660200190565b600082601f830112612a5857600080fd5b8135612a6b612a6682612a20565b6129f0565b818152846020838601011115612a8057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612ab257600080fd5b833592506020840135915060408401356001600160401b03811115612ad657600080fd5b612ae286828701612a47565b9150509250925092565b80356001600160a01b0381168114612b0357600080fd5b919050565b600060208284031215612b1a57600080fd5b6109c682612aec565b6001600160a01b0391909116815260200190565b600080600060608486031215612b4c57600080fd5b612b5584612aec565b9250612b6360208501612aec565b915060408401356001600160e01b031981168114612b8057600080fd5b809150509250925092565b600060208284031215612b9d57600080fd5b5035919050565b6000610120808352612bb88184018d61294e565b90508281036020840152612bcc818c61294e565b90508281036040840152612be0818b61294e565b905062ffffff808a1660608501528382036080850152612c00828a61294e565b915080881660a085015283820360c0850152612c1c828861294e565b925085151560e085015280851661010085015250509a9950505050505050505050565b60008060408385031215612c5257600080fd5b8235915060208301356001600160401b03811115612c6f57600080fd5b612c7b85828601612a47565b9150509250929050565b60008060408385031215612c9857600080fd5b612ca183612aec565b946020939093013593505050565b60008060408385031215612cc257600080fd5b82359150612cd260208401612aec565b90509250929050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612d3057603f19888603018452612d1e85835161294e565b94509285019290850190600101612d02565b5092979650505050505050565b600080600080600060a08688031215612d5557600080fd5b853594506020860135935060408601356001600160401b0380821115612d7a57600080fd5b612d8689838a01612a47565b94506060880135915080821115612d9c57600080fd5b612da889838a01612a47565b93506080880135915080821115612dbe57600080fd5b50612dcb88828901612a47565b9150509295509295909350565b600080600060608486031215612ded57600080fd5b612df684612aec565b95602085013595506040909401359392505050565b600080600060608486031215612e2057600080fd5b8335925060208401359150612e3760408501612aec565b90509250925092565b600181811c90821680612e5457607f821691505b6020821081036123cf57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612eb257612eb2612e8a565b5060010190565b601f821115612f0357600081815260208120601f850160051c81016020861015612ee05750805b601f850160051c820191505b81811015612eff57828155600101612eec565b5050505b505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115612f3657612f366129da565b612f4a81612f448454612e40565b84612eb9565b602080601f831160018114612f795760008415612f675750858301515b612f718582612f08565b865550612eff565b600085815260208120601f198616915b82811015612fa857888601518255948401946001909101908401612f89565b5085821015612fc65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612fe9604083018561294e565b90508260208301529392505050565b60006020828403121561300a57600080fd5b815180151581146109c657600080fd5b6000613028612a6684612a20565b905082815283838301111561303c57600080fd5b6109c683602083018461292a565b600082601f83011261305b57600080fd5b6109c68383516020850161301a565b60008060006060848603121561307f57600080fd5b83516001600160401b038082111561309657600080fd5b6130a28783880161304a565b945060208601519150808211156130b857600080fd5b506130c58682870161304a565b925050604084015190509250925092565b62ffffff81811683821601908082111561072257610722612e8a565b60006020828403121561310457600080fd5b5051919050565b60006020828403121561311d57600080fd5b81516001600160401b0381111561313357600080fd5b8201601f8101841361314457600080fd5b6117108482516020840161301a565b60006020828403121561316557600080fd5b81516001600160401b0381111561317b57600080fd5b6117108482850161304a565b62ffffff82811682821603908082111561072257610722612e8a565b8082018082111561067457610674612e8a565b6060815260006131c9606083018661294e565b82810360208401526131db818661294e565b905082810360408401526131ef818561294e565b9695505050505050565b8181038181111561067457610674612e8a565b818103613217575050565b6132218254612e40565b6001600160401b03811115613238576132386129da565b61324681612f448454612e40565b6000601f82116001811461327457600083156132625750848201545b61326c8482612f08565b8555506132d9565b600085815260209020601f19841690600086815260209020845b838110156132ae578286015482556001958601959091019060200161328e565b50858310156132cc5781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b6a600b5981380380925939f360a81b8152607f60f91b600b820152600c81018490526000602c8201819052606084901b6001600160601b0319166038830152825161333281604c85016020870161292a565b91909101604c01949350505050565b600060ff821660ff810361335757613357612e8a565b60010192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603160045260246000fdfef79e11fc86b9bf37d5dfd4359c053136f7c046da6a08f9cf7ca56d80d5aab839a26469706673582212205b1972e39cf6def9309ed94f77ac484c7cbc7cbad3af5a90481b15e5a272762c64736f6c63430008130033",
1188
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061021e5760003560e01c8063a1a7a47b1161012c578063a1a7a47b1461041c578063b86b69f11461042f578063ba22851214610437578063bbf2aefb1461044a578063bd880b461461045d578063be3d3ee614610470578063c073927014610483578063c0cd565f14610496578063c4d66de8146104a9578063caaa3bb7146104bc578063cc86ba4b146104cf578063cea2961a146104e2578063dbc71ccb146104f5578063dc33f4ae14610508578063dfa3be531461051b578063f0b993821461052e578063f146f17f14610541578063f2fde38b14610554578063f73f499114610567578063f8ac18be1461057a578063f9c0fae61461058d578063fb5cd19b146105a0578063fed37e82146105a857600080fd5b8062e879031461022357806307f9f7861461024c5780631376218614610261578063199eb8e0146102765780631a051d49146102895780631e9bef461461029c578063230448b1146102bc57806325ffb376146102df5780633bd7cfa2146103075780633e76919a1461031a578063474bbdc21461032d5780634bd1a38714610340578063518cb3df1461035357806351eda9991461036657806352ccc0211461037b5780635668bc5e1461038e5780635710f83d146103cb57806366d549a1146103de5780636dfa9f56146103f1578063715018a6146104045780637cbb45c81461040c5780638da5cb5b14610414575b600080fd5b610236610231366004612908565b6105b0565b604051610243919061297a565b60405180910390f35b61025461067a565b604051610243919061298d565b61027461026f366004612a9d565b610729565b005b610274610284366004612b08565b6107c9565b610274610297366004612a9d565b61087f565b6065546102af906001600160a01b031681565b6040516102439190612b23565b6102cf6102ca366004612b37565b61091f565b6040519015158152602001610243565b6102f26102ed366004612b8b565b6109cd565b60405161024399989796959493929190612ba4565b610274610315366004612c3f565b610c01565b6102af610328366004612b8b565b610c72565b61023661033b366004612c85565b610c92565b61027461034e366004612caf565b610dce565b610236610361366004612908565b610e91565b61036e611080565b6040516102439190612cdb565b610274610389366004612b8b565b61112e565b6103bd61039c366004612b8b565b600090815260686020526040902060070154600160301b900462ffffff1690565b604051908152602001610243565b6102746103d9366004612c3f565b611242565b6102746103ec366004612d3d565b6112fa565b6102746103ff366004612908565b611443565b610274611535565b6103bd611549565b6102af61155a565b61027461042a366004612908565b61156e565b6103bd61163c565b6103bd610445366004612908565b611648565b610274610458366004612dd8565b611718565b61023661046b366004612b8b565b611799565b61027461047e366004612c3f565b6117b7565b610274610491366004612b8b565b61181c565b6102746104a4366004612e0b565b611908565b6102746104b7366004612b08565b611998565b6102746104ca366004612a9d565b611ab3565b6102366104dd366004612b8b565b611b4c565b6102cf6104f0366004612b08565b611b6a565b610274610503366004612b08565b611b77565b610274610516366004612c3f565b611c1b565b6102af610529366004612908565b611caa565b61023661053c366004612908565b611cf3565b61027461054f366004612c3f565b611d3c565b610274610562366004612b08565b611ded565b610274610575366004612c85565b611e66565b610274610588366004612b8b565b611f36565b61027461059b366004612c3f565b6120a6565b61036e61210b565b6103bd6121b4565b60008281526068602052604090206007810154606091906105d790849062ffffff166121c0565b6000838152600282016020526040902080546105f290612e40565b80601f016020809104026020016040519081016040528092919081815260200182805461061e90612e40565b801561066b5780601f106106405761010080835404028352916020019161066b565b820191906000526020600020905b81548152906001019060200180831161064e57829003601f168201915b50505050509150505b92915050565b60606000610688606b612204565b90506000816001600160401b038111156106a4576106a46129da565b6040519080825280602002602001820160405280156106cd578160200160208202803683370190505b50905060005b82811015610722576106e6606b8261220e565b8282815181106106f8576106f8612e74565b6001600160a01b03909216602092830291909101909101528061071a81612ea0565b9150506106d3565b5092915050565b6107396309bb10c360e11b61221a565b6107428161226a565b61074b836122b9565b6000838152606860205260409020600781015461076e90849062ffffff166121c0565b600083815260028201602052604090206107888382612f1d565b50837f5f667fb1eaf23e0fee1a9dcc154d842202b184eb9ad83502c00c784808a8d00d83856040516107bb929190612fd6565b60405180910390a250505050565b6107d862ccf5c760e51b61221a565b6107e3606b82612310565b6108485760405162461bcd60e51b815260206004820152602b60248201527f436f726520636f6e747261637420616c72656164792072656d6f766564206f7260448201526a081b9bdd081a5b881cd95d60aa1b60648201526084015b60405180910390fd5b6040516001600160a01b038216907f2453d2f77bae1012d39e2257356d2566625ebe0ffd6094198aa051689dc65ba090600090a250565b61088f631a051d4960e01b61221a565b6108988161226a565b6108a1836122b9565b600083815260686020526040902060078101546108cb908490600160301b900462ffffff166121c0565b6108d482612325565b600084815260068301602052604080822080546001600160a01b0319166001600160a01b039490941693909317909255905185916000805160206133c283398151915291a250505050565b60008061092a61155a565b6001600160a01b0316141580156109c357506065546040516217798b60e61b81526001600160a01b03868116600483015285811660248301526001600160e01b031985166044830152909116906305de62c0906064016020604051808303816000875af115801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c39190612ff8565b90505b9392505050565b606080606060006060600060606000806000606860008c815260200190815260200160002090506109fd8b6123d5565b8154610a08906123d5565b6007830154600184018054909162ffffff8082169260038801926301000000810483169260058a0192600160301b90920416801515918790610a4990612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7590612e40565b8015610ac25780601f10610a9757610100808354040283529160200191610ac2565b820191906000526020600020905b815481529060010190602001808311610aa557829003601f168201915b50505050509650848054610ad590612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0190612e40565b8015610b4e5780601f10610b2357610100808354040283529160200191610b4e565b820191906000526020600020905b815481529060010190602001808311610b3157829003601f168201915b50505050509450828054610b6190612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90612e40565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b50505050509250995099509950995099509950995099509950509193959799909294969850565b610c11631debe7d160e11b61221a565b610c1a826122b9565b6000828152606860205260409020600501610c358282612f1d565b50817f9959f3af1c0191277b92c192984b5ca38adaf82d8465332b4da850e0e6a199f482604051610c66919061297a565b60405180910390a25050565b6000610c8782610c82606b612204565b6121c0565b610674606b8361220e565b6060610c9d83612440565b6001600160a01b0383166000908152606d602090815260408083208584529091529020548015610cd857610cd0816123d5565b915050610674565b604051633ae7357560e21b8152600481018490526001600160a01b0385169063eb9cd5d490602401600060405180830381865afa925050508015610d3e57506040513d6000823e601f3d908101601f19168201604052610d3b919081019061306a565b60015b610dc25760405162461bcd60e51b815260206004820152604960248201527f436f6e747261637420646f6573206e6f7420696d706c656d656e742070726f6a60448201527f65637453637269707444657461696c7320616e6420686173206e6f206f7665726064820152683934b2329039b2ba1760b91b608482015260a40161083f565b82945050505050610674565b610dde634bd1a38760e01b61221a565b610de781612495565b610df0826122b9565b6000828152606860209081526040808320600781018054600160301b9081900462ffffff9081168752600684019095529290942080546001600160a01b0319166001600160a01b0387161790559254610e4e929190041660016130d6565b60078201805462ffffff92909216600160301b0262ffffff60301b1990921691909117905560405183906000805160206133c283398151915290600090a2505050565b6000828152606860205260409020600781015460609190610ebf908490600160301b900462ffffff166121c0565b600083815260068201602052604080822054905163cc31a33160e01b81526001600160a01b03909116919073__$55f4e50e6128becd8bf164b272db98df09$__9063cc31a33190610f14908590600401612b23565b602060405180830381865af4158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5591906130f2565b90507f554e4b4e4f574e5f56455253494f4e5f535452494e475f5f5f5f5f5f5f5f5f20810361100457604051632475d70960e01b815273__$55f4e50e6128becd8bf164b272db98df09$__90632475d70990610fb5908590600401612b23565b600060405180830381865af4158015610fd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffa919081019061310b565b9350505050610674565b604051630eacc5e760e31b815273__$55f4e50e6128becd8bf164b272db98df09$__906375662f389061103b908590600401612b23565b600060405180830381865af4158015611058573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffa9190810190613153565b6060600061108e6066612204565b90506000816001600160401b038111156110aa576110aa6129da565b6040519080825280602002602001820160405280156110dd57816020015b60608152602001906001900390816110c85790505b50905060005b82811015610722576110fe6110f960668361220e565b6123d5565b82828151811061111057611110612e74565b6020026020010181905250808061112690612ea0565b9150506110e3565b61113e6352ccc02160e01b61221a565b611147816122b9565b60008181526068602052604090206007810154600160301b900462ffffff166111b25760405162461bcd60e51b815260206004820152601e60248201527f746865726520617265206e6f207363726970747320746f2072656d6f76650000604482015260640161083f565b600781015460068201906000906111d790600190600160301b900462ffffff16613187565b62ffffff908116825260208201929092526040908101600090812080546001600160a01b031916905560078401805462ffffff60301b198116600160301b9182900486166000190190951602939093179092555183916000805160206133c283398151915291a25050565b611252635710f83d60e01b61221a565b61125b8161226a565b611264826122b9565b600082815260686020908152604080832060078101546301000000900462ffffff1680855260048201909352922061129c8482612f1d565b506112a88160016131a3565b8260070160036101000a81548162ffffff021916908362ffffff160217905550837ffe07adc986f904acd19c0f4f5d0716973976f0450de010a753a52d119ddadbde84836040516107bb929190612fd6565b61130a6366d549a160e01b61221a565b611313846124e9565b611320856040600161253e565b6113695760405162461bcd60e51b815260206004820152601a60248201527901b5d5cdd0818dbdb9d185a5b88195e1858dd1b1e481bdb9948160361b604482015260640161083f565b6113746066866125b2565b6113c05760405162461bcd60e51b815260206004820152601e60248201527f446570656e64656e6379207479706520616c7265616479206578697374730000604482015260640161083f565b6000858152606860205260409020848155600181016113df8582612f1d565b50600381016113ee8482612f1d565b50600581016113fd8382612f1d565b5084867f14d15ecf0e955bdd7a921efba642deef4d718696d3fc369454c84817fed0fb77868686604051611433939291906131b6565b60405180910390a3505050505050565b6114536336fd4fab60e11b61221a565b61145c826122b9565b600082815260686020526040902060078101546301000000900462ffffff1661148583826121c0565b60006114926001836131f9565b6000868152606860209081526040808320848452600490810183528184208985529088019092529091209192506114c9908261320c565b50600081815260048401602052604081206114e3916128ba565b60078301805465ffffff0000001916630100000062ffffff841602179055604051849086907fc02725dfc9639e3399432cdae3db1c062229f4cc41bcc18631517617c020b71c90600090a35050505050565b61153d6125be565b611547600061261d565b565b60006115556066612204565b905090565b60006115556033546001600160a01b031690565b61157e63a1a7a47b60e01b61221a565b611587826122b9565b6000828152606860205260409020600781015462ffffff166115a983826121c0565b60006115b66001836131f9565b600081815260028501602052604080822087835291209192506115d9908261320c565b50600081815260028401602052604081206115f3916128ba565b60078301805462ffffff191662ffffff8316179055604051849086907f225454b600cf489553fde6e3b7f5e458b1093c035390b678067ea799b3b016cd90600090a35050505050565b6000611555606b612204565b60008281526068602052604081206007810154611672908490600160301b900462ffffff166121c0565b60008481526068602090815260408083208684526006019091529081902054905163cc31a33160e01b815273__$55f4e50e6128becd8bf164b272db98df09$__9163cc31a331916116cf916001600160a01b031690600401612b23565b602060405180830381865af41580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171091906130f2565b949350505050565b61172863bbf2aefb60e01b61221a565b611731816122b9565b61173a83612440565b6001600160a01b0383166000818152606d6020908152604080832086845282529182902084905590518381528492917f27d39273f3676c181ec3de60b583da776123d9f9517761fb91f370a83c798918910160405180910390a3505050565b60606117a982610c826066612204565b6106746110f960668461220e565b6117c7635f1e9f7360e11b61221a565b6117d0826122b9565b60008281526068602052604090206001016117eb8282612f1d565b50817fc9890a31ec780bb5a8a017d683d3913f97260548d71c2cee78194ed2833f023582604051610c66919061297a565b61182c630c07392760e41b61221a565b6118376069826125b2565b6118815760405162461bcd60e51b815260206004820152601b60248201527a4c6963656e7365207479706520616c72656164792065786973747360281b604482015260640161083f565b806118da5760405162461bcd60e51b815260206004820152602360248201527f4c6963656e736520747970652063616e6e6f7420626520656d70747920737472604482015262696e6760e81b606482015260840161083f565b60405181907fad5dcce4588345db351371d105540f3fb69966f418d923539f19d5f44a1cfc4b90600090a250565b61191863c0cd565f60e01b61221a565b61192181612495565b61192a836122b9565b60008381526068602052604090206007810154611954908490600160301b900462ffffff166121c0565b600083815260068201602052604080822080546001600160a01b0319166001600160a01b0386161790555185916000805160206133c283398151915291a250505050565b600054610100900460ff16158080156119b85750600054600160ff909116105b806119d25750303b1580156119d2575060005460ff166001145b611a355760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161083f565b6000805460ff191660011790558015611a58576000805461ff0019166101001790555b611a60612648565b611a698261261d565b8015611aaf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b611ac363caaa3bb760e01b61221a565b611acc8161226a565b611ad5836122b9565b60008381526068602052604090206007810154611aff9084906301000000900462ffffff166121c0565b60008381526004820160205260409020611b198382612f1d565b50837ffe07adc986f904acd19c0f4f5d0716973976f0450de010a753a52d119ddadbde83856040516107bb929190612fd6565b6060611b5c82610c826069612204565b6106746110f960698461220e565b6000610674606b83612677565b611b8763dbc71ccb60e01b61221a565b611b9081612495565b611b9b606b8261268c565b611be45760405162461bcd60e51b815260206004820152601a60248201527910dbdb9d1c9858dd08185b1c9958591e481cdd5c1c1bdc9d195960321b604482015260640161083f565b6040516001600160a01b038216907f59e1b889b92ad05213b7934a67c5d824348c868455d1c741a2cfe16e46d832dc90600090a250565b611c2b636e19fa5760e11b61221a565b611c348161226a565b611c3d826122b9565b6000828152606860205260409020611c5482612325565b600782018054600160301b9081900462ffffff9081166000908152600686016020526040902080546001600160a01b0319166001600160a01b0395909516949094179093559054610e4e929190041660016130d6565b60008281526068602052604081206007810154611cd4908490600160301b900462ffffff166121c0565b60009283526006016020525060409020546001600160a01b0316919050565b6000828152606860205260409020600781015460609190611d219084906301000000900462ffffff166121c0565b6000838152600482016020526040902080546105f290612e40565b611d4c63f146f17f60e01b61221a565b611d558161226a565b611d5e826122b9565b6000828152606860209081526040808320600781015462ffffff16808552600282019093529220611d8f8482612f1d565b50611d9b8160016131a3565b8260070160006101000a81548162ffffff021916908362ffffff160217905550837f5f667fb1eaf23e0fee1a9dcc154d842202b184eb9ad83502c00c784808a8d00d84836040516107bb929190612fd6565b611df56125be565b6001600160a01b038116611e5a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161083f565b611e638161261d565b50565b611e7663f73f499160e01b61221a565b6001600160a01b0382166000908152606d60209081526040808320848452909152902054611ee45760405162461bcd60e51b815260206004820152601b60248201527a139bc81bdd995c9c9a5919481cd95d08199bdc881c1c9bda9958dd602a1b604482015260640161083f565b6001600160a01b0382166000818152606d60209081526040808320858452909152808220829055518392917f0732620824c0200808d04ab037f3abc3c31853170b90f5a855d32f44486048ed91a35050565b611f46637c560c5f60e11b61221a565b611f4f816122b9565b6000818152606860205260409020600781015462ffffff16158015611f82575060078101546301000000900462ffffff16155b8015611f9c57506007810154600160301b900462ffffff16155b61201e5760405162461bcd60e51b815260206004820152604760248201527f43616e6e6f742072656d6f766520646570656e64656e6379207769746820616460448201527f646974696f6e616c2043444e732c207265706f7369746f726965732c206f72206064820152667363726970747360c81b608482015260a40161083f565b6120296066836126a1565b5060008281526068602052604081208181559061204960018301826128ba565b6120576003830160006128ba565b6120656005830160006128ba565b5060070180546001600160481b031916905560405182907f60e2aa021c4f5303dd65e2173f0180636e4d42eaefc6187278e92bee9d06aa7290600090a25050565b6120b6637ce07d7360e11b61221a565b6120bf826122b9565b60008281526068602052604090206003016120da8282612f1d565b50817f774918414e4887efe5349a305fe253ee8b1e3fe0c2117012f0c215645693cbfd82604051610c66919061297a565b606060006121196069612204565b90506000816001600160401b03811115612135576121356129da565b60405190808252806020026020018201604052801561216857816020015b60608152602001906001900390816121535790505b50905060005b82811015610722576121846110f960698361220e565b82828151811061219657612196612e74565b602002602001018190525080806121ac90612ea0565b91505061216e565b60006115556069612204565b808210611aaf5760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b604482015260640161083f565b6000610674825490565b60006109c683836126ad565b61222533308361091f565b611e635760405162461bcd60e51b815260206004820152601660248201527513db9b1e4810591b5a5b881050d308185b1b1bddd95960521b604482015260640161083f565b8051600003611e635760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d656d70747920737472696e6760281b604482015260640161083f565b6122c46066826126d7565b611e635760405162461bcd60e51b815260206004820152601e60248201527f446570656e64656e6379207479706520646f6573206e6f742065786973740000604482015260640161083f565b60006109c6836001600160a01b0384166126e3565b6000807f42797465636f646553746f726167655f56312e302e305f5f5f5f5f5f5f5f5f20308460405160200161235d939291906132e0565b60405160208183030381529060405290508051602082016000f091506001600160a01b0382166123cf5760405162461bcd60e51b815260206004820152601e60248201527f436f6e7472616374417353746f726167653a205772697465204572726f720000604482015260640161083f565b50919050565b606060005b828160ff16602081106123ef576123ef612e74565b1a60f81b6001600160f81b0319161580159061240e575060208160ff16105b15612425578061241d81613341565b9150506123da565b60405191506040820160405280825282602083015250919050565b61244b606b82612677565b611e635760405162461bcd60e51b815260206004820152601b60248201527a10dbdc994818dbdb9d1c9858dd081b9bdd081cdd5c1c1bdc9d1959602a1b604482015260640161083f565b6001600160a01b038116611e635760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d7a65726f206164647265737360281b604482015260640161083f565b6124f46069826126d7565b611e635760405162461bcd60e51b815260206004820152601b60248201527a131a58d95b9cd9481d1e5c1948191bd95cc81b9bdd08195e1a5cdd602a1b604482015260640161083f565b60008060005b60208160ff16101561259e576000868260ff166020811061256757612567612e74565b1a9050801580159061257c575060808160ff16105b15612595578560ff168160ff1603612595578260010192505b50600101612544565b8360ff168260ff1614925050509392505050565b60006109c683836127d6565b336125c761155a565b6001600160a01b0316146115475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083f565b61262681612820565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661266f5760405162461bcd60e51b815260040161083f90613360565b611547612872565b60006109c6836001600160a01b0384166128a2565b60006109c6836001600160a01b0384166127d6565b60006109c683836126e3565b60008260000182815481106126c4576126c4612e74565b9060005260206000200154905092915050565b60006109c683836128a2565b600081815260018301602052604081205480156127cc5760006127076001836131f9565b855490915060009061271b906001906131f9565b905081811461278057600086600001828154811061273b5761273b612e74565b906000526020600020015490508087600001848154811061275e5761275e612e74565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612791576127916133ab565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610674565b6000915050610674565b60006127e283836128a2565b61281857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610674565b506000610674565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166128995760405162461bcd60e51b815260040161083f90613360565b6115473361261d565b60009081526001919091016020526040902054151590565b5080546128c690612e40565b6000825580601f106128d6575050565b601f016020900490600052602060002090810190611e6391905b8082111561290457600081556001016128f0565b5090565b6000806040838503121561291b57600080fd5b50508035926020909101359150565b60005b8381101561294557818101518382015260200161292d565b50506000910152565b6000815180845261296681602086016020860161292a565b601f01601f19169290920160200192915050565b6020815260006109c6602083018461294e565b6020808252825182820181905260009190848201906040850190845b818110156129ce5783516001600160a01b0316835292840192918401916001016129a9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612a1857612a186129da565b604052919050565b60006001600160401b03821115612a3957612a396129da565b50601f01601f191660200190565b600082601f830112612a5857600080fd5b8135612a6b612a6682612a20565b6129f0565b818152846020838601011115612a8057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612ab257600080fd5b833592506020840135915060408401356001600160401b03811115612ad657600080fd5b612ae286828701612a47565b9150509250925092565b80356001600160a01b0381168114612b0357600080fd5b919050565b600060208284031215612b1a57600080fd5b6109c682612aec565b6001600160a01b0391909116815260200190565b600080600060608486031215612b4c57600080fd5b612b5584612aec565b9250612b6360208501612aec565b915060408401356001600160e01b031981168114612b8057600080fd5b809150509250925092565b600060208284031215612b9d57600080fd5b5035919050565b6000610120808352612bb88184018d61294e565b90508281036020840152612bcc818c61294e565b90508281036040840152612be0818b61294e565b905062ffffff808a1660608501528382036080850152612c00828a61294e565b915080881660a085015283820360c0850152612c1c828861294e565b925085151560e085015280851661010085015250509a9950505050505050505050565b60008060408385031215612c5257600080fd5b8235915060208301356001600160401b03811115612c6f57600080fd5b612c7b85828601612a47565b9150509250929050565b60008060408385031215612c9857600080fd5b612ca183612aec565b946020939093013593505050565b60008060408385031215612cc257600080fd5b82359150612cd260208401612aec565b90509250929050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612d3057603f19888603018452612d1e85835161294e565b94509285019290850190600101612d02565b5092979650505050505050565b600080600080600060a08688031215612d5557600080fd5b853594506020860135935060408601356001600160401b0380821115612d7a57600080fd5b612d8689838a01612a47565b94506060880135915080821115612d9c57600080fd5b612da889838a01612a47565b93506080880135915080821115612dbe57600080fd5b50612dcb88828901612a47565b9150509295509295909350565b600080600060608486031215612ded57600080fd5b612df684612aec565b95602085013595506040909401359392505050565b600080600060608486031215612e2057600080fd5b8335925060208401359150612e3760408501612aec565b90509250925092565b600181811c90821680612e5457607f821691505b6020821081036123cf57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612eb257612eb2612e8a565b5060010190565b601f821115612f0357600081815260208120601f850160051c81016020861015612ee05750805b601f850160051c820191505b81811015612eff57828155600101612eec565b5050505b505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115612f3657612f366129da565b612f4a81612f448454612e40565b84612eb9565b602080601f831160018114612f795760008415612f675750858301515b612f718582612f08565b865550612eff565b600085815260208120601f198616915b82811015612fa857888601518255948401946001909101908401612f89565b5085821015612fc65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612fe9604083018561294e565b90508260208301529392505050565b60006020828403121561300a57600080fd5b815180151581146109c657600080fd5b6000613028612a6684612a20565b905082815283838301111561303c57600080fd5b6109c683602083018461292a565b600082601f83011261305b57600080fd5b6109c68383516020850161301a565b60008060006060848603121561307f57600080fd5b83516001600160401b038082111561309657600080fd5b6130a28783880161304a565b945060208601519150808211156130b857600080fd5b506130c58682870161304a565b925050604084015190509250925092565b62ffffff81811683821601908082111561072257610722612e8a565b60006020828403121561310457600080fd5b5051919050565b60006020828403121561311d57600080fd5b81516001600160401b0381111561313357600080fd5b8201601f8101841361314457600080fd5b6117108482516020840161301a565b60006020828403121561316557600080fd5b81516001600160401b0381111561317b57600080fd5b6117108482850161304a565b62ffffff82811682821603908082111561072257610722612e8a565b8082018082111561067457610674612e8a565b6060815260006131c9606083018661294e565b82810360208401526131db818661294e565b905082810360408401526131ef818561294e565b9695505050505050565b8181038181111561067457610674612e8a565b818103613217575050565b6132218254612e40565b6001600160401b03811115613238576132386129da565b61324681612f448454612e40565b6000601f82116001811461327457600083156132625750848201545b61326c8482612f08565b8555506132d9565b600085815260209020601f19841690600086815260209020845b838110156132ae578286015482556001958601959091019060200161328e565b50858310156132cc5781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b6a600b5981380380925939f360a81b8152607f60f91b600b820152600c81018490526000602c8201819052606084901b6001600160601b0319166038830152825161333281604c85016020870161292a565b91909101604c01949350505050565b600060ff821660ff810361335757613357612e8a565b60010192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603160045260246000fdfef79e11fc86b9bf37d5dfd4359c053136f7c046da6a08f9cf7ca56d80d5aab839a26469706673582212205b1972e39cf6def9309ed94f77ac484c7cbc7cbad3af5a90481b15e5a272762c64736f6c63430008130033",
1102
1189
  "linkReferences": {
1103
1190
  "contracts/libs/v0.8.x/BytecodeStorageV1.sol": {
1104
1191
  "BytecodeStorageReader": [
1105
1192
  {
1106
1193
  "length": 20,
1107
- "start": 3638
1194
+ "start": 3852
1108
1195
  },
1109
1196
  {
1110
1197
  "length": 20,
1111
- "start": 3799
1198
+ "start": 4013
1112
1199
  },
1113
1200
  {
1114
1201
  "length": 20,
1115
- "start": 3933
1202
+ "start": 4147
1116
1203
  },
1117
1204
  {
1118
1205
  "length": 20,
1119
- "start": 5622
1206
+ "start": 5823
1120
1207
  }
1121
1208
  ]
1122
1209
  }
@@ -1126,19 +1213,19 @@
1126
1213
  "BytecodeStorageReader": [
1127
1214
  {
1128
1215
  "length": 20,
1129
- "start": 3606
1216
+ "start": 3820
1130
1217
  },
1131
1218
  {
1132
1219
  "length": 20,
1133
- "start": 3767
1220
+ "start": 3981
1134
1221
  },
1135
1222
  {
1136
1223
  "length": 20,
1137
- "start": 3901
1224
+ "start": 4115
1138
1225
  },
1139
1226
  {
1140
1227
  "length": 20,
1141
- "start": 5590
1228
+ "start": 5791
1142
1229
  }
1143
1230
  ]
1144
1231
  }