@stargatefinance/stg-evm-sdk-v2 0.0.37 → 0.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 (132) hide show
  1. package/artifacts/src/StargateBase.sol/StargateBase.json +0 -5
  2. package/artifacts/src/StargateOFT.sol/StargateOFT.json +2 -7
  3. package/artifacts/src/StargatePool.sol/StargatePool.json +2 -7
  4. package/artifacts/src/StargatePoolMigratable.sol/StargatePoolMigratable.json +2 -7
  5. package/artifacts/src/StargatePoolNative.sol/StargatePoolNative.json +2 -7
  6. package/artifacts/src/messaging/TokenMessaging.sol/TokenMessaging.json +2 -2
  7. package/artifacts/src/peripheral/Treasurer.sol/Treasurer.json +2 -2
  8. package/artifacts/src/usdc/StargateOFTUSDC.sol/StargateOFTUSDC.json +2 -7
  9. package/artifacts/src/usdc/StargatePoolUSDC.sol/StargatePoolUSDC.json +2 -7
  10. package/dist/deployed/CreditMessaging.cjs +85 -0
  11. package/dist/deployed/CreditMessaging.cjs.map +1 -0
  12. package/dist/deployed/CreditMessaging.mjs +81 -0
  13. package/dist/deployed/CreditMessaging.mjs.map +1 -0
  14. package/dist/deployed/FeeLibV1ETH.cjs +60 -0
  15. package/dist/deployed/FeeLibV1ETH.cjs.map +1 -0
  16. package/dist/deployed/FeeLibV1ETH.mjs +56 -0
  17. package/dist/deployed/FeeLibV1ETH.mjs.map +1 -0
  18. package/dist/deployed/FeeLibV1METIS.cjs +19 -0
  19. package/dist/deployed/FeeLibV1METIS.cjs.map +1 -0
  20. package/dist/deployed/FeeLibV1METIS.mjs +15 -0
  21. package/dist/deployed/FeeLibV1METIS.mjs.map +1 -0
  22. package/dist/deployed/FeeLibV1USDC.cjs +66 -0
  23. package/dist/deployed/FeeLibV1USDC.cjs.map +1 -0
  24. package/dist/deployed/FeeLibV1USDC.mjs +62 -0
  25. package/dist/deployed/FeeLibV1USDC.mjs.map +1 -0
  26. package/dist/deployed/FeeLibV1USDT.cjs +70 -0
  27. package/dist/deployed/FeeLibV1USDT.cjs.map +1 -0
  28. package/dist/deployed/FeeLibV1USDT.mjs +66 -0
  29. package/dist/deployed/FeeLibV1USDT.mjs.map +1 -0
  30. package/dist/deployed/FeeLibV1mETH.cjs +19 -0
  31. package/dist/deployed/FeeLibV1mETH.cjs.map +1 -0
  32. package/dist/deployed/FeeLibV1mETH.mjs +15 -0
  33. package/dist/deployed/FeeLibV1mETH.mjs.map +1 -0
  34. package/dist/deployed/OFTTokenETH.cjs +25 -0
  35. package/dist/deployed/OFTTokenETH.cjs.map +1 -0
  36. package/dist/deployed/OFTTokenETH.mjs +21 -0
  37. package/dist/deployed/OFTTokenETH.mjs.map +1 -0
  38. package/dist/deployed/RewardLib.cjs +73 -0
  39. package/dist/deployed/RewardLib.cjs.map +1 -0
  40. package/dist/deployed/RewardLib.mjs +69 -0
  41. package/dist/deployed/RewardLib.mjs.map +1 -0
  42. package/dist/deployed/RewardRegistryLib.cjs +73 -0
  43. package/dist/deployed/RewardRegistryLib.cjs.map +1 -0
  44. package/dist/deployed/RewardRegistryLib.mjs +69 -0
  45. package/dist/deployed/RewardRegistryLib.mjs.map +1 -0
  46. package/dist/deployed/RewardTokenMock.cjs +37 -0
  47. package/dist/deployed/RewardTokenMock.cjs.map +1 -0
  48. package/dist/deployed/RewardTokenMock.mjs +33 -0
  49. package/dist/deployed/RewardTokenMock.mjs.map +1 -0
  50. package/dist/deployed/StargateMultiRewarder.cjs +73 -0
  51. package/dist/deployed/StargateMultiRewarder.cjs.map +1 -0
  52. package/dist/deployed/StargateMultiRewarder.mjs +69 -0
  53. package/dist/deployed/StargateMultiRewarder.mjs.map +1 -0
  54. package/dist/deployed/StargateOFTETH.cjs +25 -0
  55. package/dist/deployed/StargateOFTETH.cjs.map +1 -0
  56. package/dist/deployed/StargateOFTETH.mjs +21 -0
  57. package/dist/deployed/StargateOFTETH.mjs.map +1 -0
  58. package/dist/deployed/StargateOFTUSDC.cjs +28 -0
  59. package/dist/deployed/StargateOFTUSDC.cjs.map +1 -0
  60. package/dist/deployed/StargateOFTUSDC.mjs +24 -0
  61. package/dist/deployed/StargateOFTUSDC.mjs.map +1 -0
  62. package/dist/deployed/StargateOFTUSDT.cjs +28 -0
  63. package/dist/deployed/StargateOFTUSDT.cjs.map +1 -0
  64. package/dist/deployed/StargateOFTUSDT.mjs +24 -0
  65. package/dist/deployed/StargateOFTUSDT.mjs.map +1 -0
  66. package/dist/deployed/StargatePoolETH.cjs +22 -0
  67. package/dist/deployed/StargatePoolETH.cjs.map +1 -0
  68. package/dist/deployed/StargatePoolETH.mjs +18 -0
  69. package/dist/deployed/StargatePoolETH.mjs.map +1 -0
  70. package/dist/deployed/StargatePoolMETIS.cjs +19 -0
  71. package/dist/deployed/StargatePoolMETIS.cjs.map +1 -0
  72. package/dist/deployed/StargatePoolMETIS.mjs +15 -0
  73. package/dist/deployed/StargatePoolMETIS.mjs.map +1 -0
  74. package/dist/deployed/StargatePoolNative.cjs +45 -0
  75. package/dist/deployed/StargatePoolNative.cjs.map +1 -0
  76. package/dist/deployed/StargatePoolNative.mjs +41 -0
  77. package/dist/deployed/StargatePoolNative.mjs.map +1 -0
  78. package/dist/deployed/StargatePoolUSDC.cjs +54 -0
  79. package/dist/deployed/StargatePoolUSDC.cjs.map +1 -0
  80. package/dist/deployed/StargatePoolUSDC.mjs +50 -0
  81. package/dist/deployed/StargatePoolUSDC.mjs.map +1 -0
  82. package/dist/deployed/StargatePoolUSDT.cjs +58 -0
  83. package/dist/deployed/StargatePoolUSDT.cjs.map +1 -0
  84. package/dist/deployed/StargatePoolUSDT.mjs +54 -0
  85. package/dist/deployed/StargatePoolUSDT.mjs.map +1 -0
  86. package/dist/deployed/StargatePoolmETH.cjs +19 -0
  87. package/dist/deployed/StargatePoolmETH.cjs.map +1 -0
  88. package/dist/deployed/StargatePoolmETH.mjs +15 -0
  89. package/dist/deployed/StargatePoolmETH.mjs.map +1 -0
  90. package/dist/deployed/StargateStaking.cjs +73 -0
  91. package/dist/deployed/StargateStaking.cjs.map +1 -0
  92. package/dist/deployed/StargateStaking.mjs +69 -0
  93. package/dist/deployed/StargateStaking.mjs.map +1 -0
  94. package/dist/deployed/TokenMessaging.cjs +84 -0
  95. package/dist/deployed/TokenMessaging.cjs.map +1 -0
  96. package/dist/deployed/TokenMessaging.mjs +80 -0
  97. package/dist/deployed/TokenMessaging.mjs.map +1 -0
  98. package/dist/deployed/Treasurer.cjs +84 -0
  99. package/dist/deployed/Treasurer.cjs.map +1 -0
  100. package/dist/deployed/Treasurer.mjs +80 -0
  101. package/dist/deployed/Treasurer.mjs.map +1 -0
  102. package/dist/deployed/USDCImpl.cjs +31 -0
  103. package/dist/deployed/USDCImpl.cjs.map +1 -0
  104. package/dist/deployed/USDCImpl.mjs +27 -0
  105. package/dist/deployed/USDCImpl.mjs.map +1 -0
  106. package/dist/deployed/USDCProxy.cjs +31 -0
  107. package/dist/deployed/USDCProxy.cjs.map +1 -0
  108. package/dist/deployed/USDCProxy.mjs +27 -0
  109. package/dist/deployed/USDCProxy.mjs.map +1 -0
  110. package/dist/deployed/USDCSignatureLib.cjs +31 -0
  111. package/dist/deployed/USDCSignatureLib.cjs.map +1 -0
  112. package/dist/deployed/USDCSignatureLib.mjs +27 -0
  113. package/dist/deployed/USDCSignatureLib.mjs.map +1 -0
  114. package/dist/deployed/USDT.cjs +44 -0
  115. package/dist/deployed/USDT.cjs.map +1 -0
  116. package/dist/deployed/USDT.mjs +40 -0
  117. package/dist/deployed/USDT.mjs.map +1 -0
  118. package/dist/deployed/contracts.cjs +1286 -0
  119. package/dist/deployed/contracts.cjs.map +1 -0
  120. package/dist/deployed/contracts.mjs +1258 -0
  121. package/dist/deployed/contracts.mjs.map +1 -0
  122. package/dist/deployed/index.cjs +1296 -0
  123. package/dist/deployed/index.cjs.map +1 -0
  124. package/dist/deployed/index.mjs +1293 -0
  125. package/dist/deployed/index.mjs.map +1 -0
  126. package/dist/index.cjs +0 -43
  127. package/dist/index.cjs.map +1 -1
  128. package/dist/index.d.mts +1 -5
  129. package/dist/index.d.ts +1 -5
  130. package/dist/index.mjs +0 -21
  131. package/dist/index.mjs.map +1 -1
  132. package/package.json +37 -7
@@ -99,11 +99,6 @@
99
99
  "name": "Stargate_UnreceivedTokenNotFound",
100
100
  "type": "error"
101
101
  },
102
- {
103
- "inputs": [],
104
- "name": "Stargate_WithdrawPlannerFeeFailed",
105
- "type": "error"
106
- },
107
102
  {
108
103
  "inputs": [],
109
104
  "name": "Transfer_TransferFailed",
@@ -125,11 +125,6 @@
125
125
  "name": "Stargate_UnreceivedTokenNotFound",
126
126
  "type": "error"
127
127
  },
128
- {
129
- "inputs": [],
130
- "name": "Stargate_WithdrawPlannerFeeFailed",
131
- "type": "error"
132
- },
133
128
  {
134
129
  "inputs": [],
135
130
  "name": "Transfer_TransferFailed",
@@ -1510,8 +1505,8 @@
1510
1505
  "type": "function"
1511
1506
  }
1512
1507
  ],
1513
- "bytecode": "0x6101206040526001805460ff60a01b1916600160a01b1790553480156200002557600080fd5b5060405162004d0138038062004d01833981016040819052620000489162000228565b83846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000088573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ae919062000285565b848484620000bc33620001a9565b6001600160a01b03851660805260ff8084169085161015620000f157604051632e4b554360e01b815260040160405180910390fd5b620000fd8385620002c0565b6200010a90600a620003df565b60c05260ff831660a0526001600160a01b03821660e08190526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa1580156200015f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001859190620003f0565b63ffffffff16610100526200019a81620001a9565b50505050505050505062000418565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200021157600080fd5b919050565b805160ff811681146200021157600080fd5b600080600080608085870312156200023f57600080fd5b6200024a85620001f9565b93506200025a6020860162000216565b92506200026a60408601620001f9565b91506200027a60608601620001f9565b905092959194509250565b6000602082840312156200029857600080fd5b620002a38262000216565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620002dc57620002dc620002aa565b92915050565b600181815b8085111562000323578160001904821115620003075762000307620002aa565b808516156200031557918102915b93841c9390800290620002e7565b509250929050565b6000826200033c57506001620002dc565b816200034b57506000620002dc565b81600181146200036457600281146200036f576200038f565b6001915050620002dc565b60ff841115620003835762000383620002aa565b50506001821b620002dc565b5060208310610133831016604e8410600b8410161715620003b4575081810a620002dc565b620003c08383620002e2565b8060001904821115620003d757620003d7620002aa565b029392505050565b6000620002a360ff8416836200032b565b6000602082840312156200040357600080fd5b815163ffffffff81168114620002a357600080fd5b60805160a05160c05160e05161010051614818620004e96000396000818161057b01526115ee01526000818161051a015281816110d401528181611ed60152613504015260008181610aa301528181610b0e01528181610d0601528181610e6001528181610efd01528181610f2701528181610ffe01528181611757015281816121d3015281816123080152818161233201528181612590015281816128590152612a6c015260006105c40152600081816107bc01528181611cf30152818161277d015261283101526148186000f3fe6080604052600436106101e35760003560e01c80637260753711610102578063bedb86fb11610095578063cc32d17611610064578063cc32d17614610718578063d621ad3f14610752578063f2fde38b1461078a578063fc0c546a146107aa57600080fd5b8063bedb86fb14610695578063c7c7f5b3146106b5578063c859c483146106d6578063cbef2aa9146106f657600080fd5b80639f68b964116100d15780639f68b96414610624578063a7229fd914610640578063a88835d714610660578063b0d7ca5d1461068057600080fd5b80637260753714610569578063857749b0146105b25780638da5cb5b146105e65780639561b12f1461060457600080fd5b806338da6b8e1161017a578063461bb0b911610149578063461bb0b9146104c55780635114bf09146104e55780635e280f1114610508578063715018a61461055457600080fd5b806338da6b8e146104085780633b6f743b146104585780633faa12c514610485578063434def55146104a557600080fd5b8063200d2ed2116101b6578063200d2ed2146102aa578063203bd15f146102dd5780632bc5114c146102ff578063341a4648146103f557600080fd5b80630141e41b146101e85780630d35b4151461021e578063156a0d0f1461024d57806316909bca1461028e575b600080fd5b3480156101f457600080fd5b50610208610203366004613727565b6107de565b6040516102159190613804565b60405180910390f35b34801561022a57600080fd5b5061023e61023936600461382f565b610a63565b604051610215939291906138b4565b34801561025957600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526000602082015201610215565b34801561029a57600080fd5b506001604051610215919061396b565b3480156102b657600080fd5b506001546102cb90600160a01b900460ff1681565b60405160ff9091168152602001610215565b3480156102e957600080fd5b506102fd6102f8366004613a34565b610f5f565b005b34801561030b57600080fd5b506103946040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526001546001600160a01b03908116825260045481166020830152600654811692820192909252600554821660608201526002548216608082015260035490911660a082015290565b6040516102159190600060c0820190506001600160a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b6102fd610403366004613ab6565b61125d565b34801561041457600080fd5b5061043f610423366004613acf565b60076020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610215565b34801561046457600080fd5b50610478610473366004613af8565b611337565b6040516102159190613b4a565b34801561049157600080fd5b506102fd6104a0366004613b61565b6115e4565b3480156104b157600080fd5b506102fd6104c0366004613b9e565b6116b8565b3480156104d157600080fd5b506102fd6104e0366004613c01565b611925565b3480156104f157600080fd5b506104fa611ad3565b604051908152602001610215565b34801561051457600080fd5b5061053c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610215565b34801561056057600080fd5b506102fd611ae2565b34801561057557600080fd5b5061059d7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610215565b3480156105be57600080fd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105f257600080fd5b506000546001600160a01b031661053c565b34801561061057600080fd5b506102fd61061f366004613c13565b611af6565b34801561063057600080fd5b5060405160018152602001610215565b34801561064c57600080fd5b506104fa61065b366004613c86565b611c5b565b34801561066c57600080fd5b506102fd61067b366004613cc2565b611d84565b34801561068c57600080fd5b506102fd611faf565b3480156106a157600080fd5b506102fd6106b0366004613d4b565b612059565b6106c86106c3366004613d68565b612114565b604051610215929190613e06565b3480156106e257600080fd5b506102fd6106f1366004613e2a565b612148565b610709610704366004613d68565b612243565b60405161021593929190613e56565b34801561072457600080fd5b5060015461043f907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b34801561075e57600080fd5b506104fa61076d366004613eb1565b600860209081526000928352604080842090915290825290205481565b34801561079657600080fd5b506102fd6107a5366004613edd565b612428565b3480156107b657600080fd5b5061053c7f000000000000000000000000000000000000000000000000000000000000000081565b60018054606091600160a01b90910460ff161461085657600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556002546001600160a01b03163381146108a657604051635bd25eff60e01b815260040160405180910390fd5b60008367ffffffffffffffff8111156108c1576108c1613ef8565b60405190808252806020026020018201604052801561090657816020015b60408051808201909152600080825260208201528152602001906001900390816108df5790505b5090506000805b85811015610a08573687878381811061092857610928613f27565b905060600201905060006109928260200160208101906109489190613f56565b6109586060850160408601613f56565b600760006109696020880188613acf565b63ffffffff1663ffffffff1681526020019081526020016000206124d49092919063ffffffff16565b905067ffffffffffffffff8116156109fe5760408051808201909152806109bc6020850185613acf565b63ffffffff16815267ffffffffffffffff831660209091015285856109e081613fa2565b9650815181106109f2576109f2613f27565b60200260200101819052505b505060010161090d565b508082527fce105e156370093e6600169f7c01277f740d45fbcf95435227ce6f43ad0c3abd8783604051610a3d929190613fda565b60405180910390a1509150506001805460ff60a01b1916600160a01b1790559392505050565b60408051808201909152600080825260208201526060610a96604051806040016040528060008152602001600081525090565b60408051808201909152807f00000000000000000000000000000000000000000000000000000000000000008152602001610b3160076000886000016020810190610ae19190613acf565b63ffffffff16815260208101919091526040016000205467ffffffffffffffff1667ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81525092506000610b5e8460200151866040013511610b54578560400135612589565b8460200151612589565b90506000610b8e610b726020880188613acf565b83610b89610b8360c08b018b613ff9565b15919050565b6125c9565b600154604080517f81993cd000000000000000000000000000000000000000000000000000000000815283516001600160a01b039081166004830152602085015163ffffffff1660248301529184015167ffffffffffffffff9081166044830152606085015116606482015260808401511515608482015260a0840151151560a48201529293506000929116906381993cd09060c401602060405180830381865afa158015610c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c65919061405e565b90508267ffffffffffffffff168167ffffffffffffffff1614610ee25760408051600180825281830190925290816020015b604080518082019091526000815260606020820152815260200190600190039081610c975790505094508267ffffffffffffffff168167ffffffffffffffff161015610db9576040518060400160405280610d2e610d298487610cfa919061407b565b67ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b612653565b610d58907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61409c565b81526020016040518060400160405280600c81526020017f70726f746f636f6c20666565000000000000000000000000000000000000000081525081525085600081518110610da957610da9613f27565b6020026020010181905250610ee2565b8267ffffffffffffffff168167ffffffffffffffff161115610ee2576000610de1848361407b565b9091039050600067ffffffffffffffff84811690831603610e42576040805160008082526020820190925290610e3a565b604080518082019091526000815260606020820152815260200190600190039081610e125790505b509550610ee0565b6040518060400160405280610e83610d298467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020016040518060400160405280600681526020017f726577617264000000000000000000000000000000000000000000000000000081525081525086600081518110610ed457610ed4613f27565b60200260200101819052505b505b6040518060400160405280610f208567ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416029052959794965050505050565b60018054600160a01b900460ff1614610fa157600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556005546001600160a01b0316338114610ff157604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff84167f000000000000000000000000000000000000000000000000000000000000000002821580159060609061108a5761108761103d60608c0160408d01613f56565b61104a60208d018d613acf565b8589898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061270992505050565b90505b6000611096898561273b565b9050801561119f578215611143576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611110908c908e9060009088906004016140e8565b600060405180830381600087803b15801561112a57600080fd5b505af115801561113e573d6000803e3d6000fd5b505050505b6001600160a01b0389168a7fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61117c60208f018f613acf565b6040805163ffffffff9092168252602082018990520160405180910390a361123d565b6111ac60208c018c613acf565b8985846040516020016111c2949392919061411a565b60408051601f19818403018152918152815160209283012060008d8152600884528281208180528452918220557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b55918c919061121f908f018f613acf565b8c888760405161123496959493929190614198565b60405180910390a15b50506001805460ff60a01b1916600160a01b179055505050505050505050565b6006546001600160a01b031633811461128957604051635bd25eff60e01b815260040160405180910390fd5b611292826127e2565b600061129e338461281a565b905080600160158282829054906101000a900467ffffffffffffffff166112c591906141e7565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa064a2faa279f4d67c85c8fc69d4ebb7de2739a9e6dd864dfdd1b9e066d4bfd08160405161132a919067ffffffffffffffff91909116815260200190565b60405180910390a1505050565b6040805180820190915260008082526020820152600061135a8460400135612589565b90508067ffffffffffffffff166000036113a0576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113b2610b8360c0870187613ff9565b90508015611520576005546040805160c081019091523381526001600160a01b0390911690633292cf02906020808201906113ef908a018a613acf565b63ffffffff1681526020898101359082015267ffffffffffffffff8616604082015260600161142160a08a018a613ff9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161146860808a018a613ff9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526114d991908890600401614277565b6040805180830381865afa1580156114f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115199190614325565b92506115dc565b6000806115306080880188613ff9565b60055492109250506001600160a01b03166375d2208c6115536020890189613acf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015283151560248201526044016040805180830381865afa1580156115b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d89190614325565b9350505b505092915050565b6115ec612900565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168263ffffffff1603611651576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff808316600090815260076020526040902061167391839061297416565b6040805163ffffffff8416815282151560208201527faf6b8dd4c5a827e03f548d06181b36aaba61e22436ff1cfa9bc409d576366a6091015b60405180910390a15050565b60018054600160a01b900460ff16146116fa57600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556005546001600160a01b031633811461174a57604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff82167f0000000000000000000000000000000000000000000000000000000000000000026000611783858361273b565b905080156117e7576001600160a01b038516877fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6117c460208c018c613acf565b6040805163ffffffff9092168252602082018790520160405180910390a3611908565b6117f46020890189613acf565b60405160e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166020820152606086901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660248201526038810183905260580160408051601f19818403018152918152815160209283012060008a81526008845282812060ff8b168252845291909120557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b5590889088906118bc908c018c613acf565b6040805193845260ff909216602084015263ffffffff16908201526001600160a01b03871660608201526080810184905260c060a0820181905260009082015260e00160405180910390a15b50506001805460ff60a01b1916600160a01b179055505050505050565b61192d612900565b61193a6020820182613edd565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119776040820160208301613edd565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119b46060820160408301613edd565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119f16080820160608301613edd565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611a2e60a0820160808301613edd565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611a6b60c0820160a08301613edd565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040517f9774229668135b546675daf425e41c0848f60aa32d0951881245f4f528cc33f090611ac8908390614341565b60405180910390a150565b6000611add612a3e565b905090565b611aea612900565b611af46000612aad565b565b60018054600160a01b900460ff1614611b3857600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556002546001600160a01b0316338114611b8857604051635bd25eff60e01b815260040160405180910390fd5b60005b82811015611c065736848483818110611ba657611ba6613f27565b9050604002019050611bfd816020016020810190611bc49190613f56565b60076000611bd56020860186613acf565b63ffffffff1663ffffffff168152602001908152602001600020612b0a90919063ffffffff16565b50600101611b8b565b507f10c5f2b007767d266c6c75c86ae9ed0c74e6320b30bda231af7396a990e7263c848484604051611c3a939291906143c0565b60405180910390a150506001805460ff60a01b1916600160a01b1790555050565b60018054600091600160a01b90910460ff1614611ca157600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556006546001600160a01b0316338114611cf157604051635bd25eff60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611d5c576040517f809fc44b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d698585856000612ba4565b50506001805460ff60a01b1916600160a01b17905592915050565b60018054600160a01b900460ff1614611dc657600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b191674020000000000000000000000000000000000000000179055604051611e039086908690869086908690602001614433565b60408051601f19818403018152918152815160209283012060008a81526008845282812060ff8b16825290935291205414611e6a576040517faba8b6ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600087815260086020908152604080832060ff8a168452909152812055611e918484612bec565b611ea0611e9d84612589565b50565b8015611f47576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611f149087908b90600090889088906004016144a5565b600060405180830381600087803b158015611f2e57600080fd5b505af1158015611f42573d6000803e3d6000fd5b505050505b6040805163ffffffff87168152602081018590526001600160a01b0386169189917fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c910160405180910390a350506001805460ff60a01b1916600160a01b1790555050505050565b6004546001600160a01b0316338114611fdb57604051635bd25eff60e01b815260040160405180910390fd5b6000611fe5612a3e565b9050611ff333826000612c31565b612029576040517f3c2f177d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527f19e23b96a5e0d494b59baca97d1fe386cf8e80a978dfd8845d25f1a9d5c7e183906020016116ac565b6004546001600160a01b031633811461208557604051635bd25eff60e01b815260040160405180910390fd5b600154600119600160a01b90910460ff16016120b4576040516376a9ad7360e01b815260040160405180910390fd5b816120c05760016120c3565b60035b6001805460ff92909216600160a01b0260ff60a01b1990921691909117905560405182151581527f878ac8a2ca79520471f8f3c8494fa802c03ce3bf034252aad7f22318984fdbdb906020016116ac565b61211c6136c6565b604080518082019091526000808252602082015261213b858585612243565b5090969095509350505050565b6006546001600160a01b031633811461217457604051635bd25eff60e01b815260040160405180910390fd5b81600160158282829054906101000a900467ffffffffffffffff16612199919061407b565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506121fb836121f68467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b612bec565b604080516001600160a01b038516815267ffffffffffffffff841660208201527fa46907b6b80b882da80d6e36cc905dde57fafff0a5442c8898526fe952d1e653910161132a565b61224b6136c6565b604080518082019091526000808252602082015260408051808201909152600081526060602082015260018054600160a01b900460ff16146122b657600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b191674020000000000000000000000000000000000000000179055600080806122e789612cea565b925092509250604051806040016040528061232b8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff84160290529450600061237c612375368b90038b018b6144f6565b8751612d88565b90508315612397576123908a82848b612ddd565b96506123a9565b6123a38a82848b612f6c565b90975094505b865133907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a6123db60208e018e613acf565b89516020808c01516040805163ffffffff90951685529184019290925282015260600160405180910390a350506001805460ff60a01b1916600160a01b1790555092969195509350915050565b612430612900565b6001600160a01b0381166124cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b611e9d81612aad565b825460009067ffffffffffffffff1667fffffffffffffffe198101612525576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168367ffffffffffffffff1610156125815782810367ffffffffffffffff8082169086161161255e5784612560565b805b865467ffffffffffffffff191681840367ffffffffffffffff161787559250505b509392505050565b60006125c37f000000000000000000000000000000000000000000000000000000000000000083816125bd576125bd614528565b04613168565b92915050565b6040805160c08082018352600080835260208084018290528385018290526060808501839052608080860184905260a09586018490528651948501875233855263ffffffff8a1685840181905267ffffffffffffffff8a8116878a0152928601859052845260079092529490912054841690931492810192909252821515908201525b9392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612705576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016124c2565b5090565b6060848484846040516020016127229493929190614557565b6040516020818303038152906040529050949350505050565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390526000917f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b1580156127c357600080fd5b505af19250505080156127d4575060015b156125c35750600192915050565b3415611e9d576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061282582612589565b90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166379cc6790847f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8516026040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156128e257600080fd5b505af11580156128f6573d6000803e3d6000fd5b5050505092915050565b6000546001600160a01b03163314611af4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016124c2565b815467ffffffffffffffff1681156129e65767ffffffffffffffff8116156129c8576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff178355505050565b67ffffffffffffffff81811614612a29576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191683555b505050565b600154600090479067ffffffffffffffff7501000000000000000000000000000000000000000000909104167f00000000000000000000000000000000000000000000000000000000000000000281811015612aa357612a9e81836145d5565b612aa6565b60005b9250505090565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b815467ffffffffffffffff1667fffffffffffffffe198101612b2b57505050565b612b3582826141e7565b905067fffffffffffffffe1967ffffffffffffffff821601612b83576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff919091161790915550565b612bb084848484613202565b612be6576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000612bf8838361273b565b905080612a39576040517f06a6167e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081612c8c576040516001600160a01b038516908490600081818185875af1925050503d8060008114612c81576040519150601f19603f3d011682016040523d82523d6000602084013e612c86565b606091505b50612ce1565b6040516001600160a01b038516906108fc9085906000818181858888f193505050503d8060008114612cda576040519150601f19603f3d011682016040523d82523d6000602084013e612cdf565b606091505b505b50949350505050565b60008080612cfe610b8360c0860186613ff9565b9250612d0e33856040013561281a565b91506000612d29612d226020870187613acf565b84866125c9565b9050612d4181612d3c8760600135612589565b613237565b9150612d808260076000612d5860208a018a613acf565b63ffffffff1663ffffffff16815260200190815260200160002061342c90919063ffffffff16565b509193909250565b604080518082019091526000808252602082015282513414612dd6576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090919050565b612de56136c6565b602084015115612dfc57612dfc84602001516134ba565b60055484516040805160c081019091523381526001600160a01b039092169163ff6fb3009190602080820190612e34908b018b613acf565b63ffffffff16815260208a8101359082015267ffffffffffffffff88166040820152606001612e6660a08b018b613ff9565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001612ead60808b018b613ff9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152612f209190899088906004016145e8565b60806040518083038185885af1158015612f3e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f639190614698565b95945050505050565b612f746136c6565b604080518082019091526000815260606020820152602085015115612fc5576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546040805160a081019091523381526001600160a01b03909116906385afd45390602080820190612ffa908b018b613acf565b63ffffffff16815260208a8101359082015267ffffffffffffffff88166040820152606001600061302e60808c018c613ff9565b9190911190915250604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815282516001600160a01b03166004820152602083015163ffffffff166024820152908201516044820152606082015167ffffffffffffffff1660648201526080909101511515608482015260a4016000604051808303816000875af11580156130cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f791908101906146b4565b60408201515187519294509092509080821461315d578181111561312b5781810361312486826000612c31565b505061315d565b6040517fa028531600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505094509492505050565b600067ffffffffffffffff821115612705576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f342062697473000000000000000000000000000000000000000000000000000060648201526084016124c2565b60006001600160a01b0385166132245761321d848484612c31565b905061322f565b612f6385858561352d565b949350505050565b600154604080517f43d9564d00000000000000000000000000000000000000000000000000000000815284516001600160a01b039081166004830152602086015163ffffffff1660248301529185015167ffffffffffffffff9081166044830152606086015116606482015260808501511515608482015260a0850151151560a482015260009291909116906343d9564d9060c4016020604051808303816000875af11580156132eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330f919061405e565b604084015190915067ffffffffffffffff808216908316101561339657613336828261407b565b6001805460159061336b9084907501000000000000000000000000000000000000000000900467ffffffffffffffff166141e7565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506133c4565b8067ffffffffffffffff168267ffffffffffffffff1611156133c45760006133be828461407b565b90920391505b8267ffffffffffffffff168267ffffffffffffffff1610806133ee575067ffffffffffffffff8216155b15613425576040517fa1e8654500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b815467ffffffffffffffff1667fffffffffffffffe19810161344d57505050565b8167ffffffffffffffff168167ffffffffffffffff16101561349b576040517f2b4d0ad500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191691900367ffffffffffffffff16179055565b6003546001600160a01b0316806134fd576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61352981337f0000000000000000000000000000000000000000000000000000000000000000856135d9565b5050565b6040516001600160a01b03831660248201526044810182905260009061322f9085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526135e5565b612bb084848484613672565b6000806000846001600160a01b03168460405161360291906147a9565b6000604051808303816000865af19150503d806000811461363f576040519150601f19603f3d011682016040523d82523d6000602084013e613644565b606091505b509150915081613655576000612f63565b80511580612f63575080806020019051810190612f6391906147c5565b6040516001600160a01b0380851660248301528316604482015260648101829052600090612f639086907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613575565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001613709604051806040016040528060008152602001600081525090565b905290565b803563ffffffff8116811461372257600080fd5b919050565b60008060006040848603121561373c57600080fd5b6137458461370e565b9250602084013567ffffffffffffffff8082111561376257600080fd5b818601915086601f83011261377657600080fd5b81358181111561378557600080fd5b87602060608302850101111561379a57600080fd5b6020830194508093505050509250925092565b60008151808452602080850194506020840160005b838110156137f9578151805163ffffffff16885283015167ffffffffffffffff1683880152604090960195908201906001016137c2565b509495945050505050565b60208152600061264c60208301846137ad565b600060e0828403121561382957600080fd5b50919050565b60006020828403121561384157600080fd5b813567ffffffffffffffff81111561385857600080fd5b61322f84828501613817565b60005b8381101561387f578181015183820152602001613867565b50506000910152565b600081518084526138a0816020860160208601613864565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b8381101561394d578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4001855281518051885283015183880187905261393a87890182613888565b97505093820193908201906001016138f0565b5050875160608801525050506020850151608085015250905061322f565b60208101600283106139a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006060828403121561382957600080fd5b80356001600160a01b038116811461372257600080fd5b67ffffffffffffffff81168114611e9d57600080fd5b60008083601f8401126139fd57600080fd5b50813567ffffffffffffffff811115613a1557600080fd5b602083019150836020828501011115613a2d57600080fd5b9250929050565b60008060008060008060e08789031215613a4d57600080fd5b613a5788886139ac565b955060608701359450613a6c608088016139be565b935060a0870135613a7c816139d5565b925060c087013567ffffffffffffffff811115613a9857600080fd5b613aa489828a016139eb565b979a9699509497509295939492505050565b600060208284031215613ac857600080fd5b5035919050565b600060208284031215613ae157600080fd5b61264c8261370e565b8015158114611e9d57600080fd5b60008060408385031215613b0b57600080fd5b823567ffffffffffffffff811115613b2257600080fd5b613b2e85828601613817565b9250506020830135613b3f81613aea565b809150509250929050565b8151815260208083015190820152604081016125c3565b60008060408385031215613b7457600080fd5b613b7d8361370e565b91506020830135613b3f81613aea565b803560ff8116811461372257600080fd5b600080600080600060e08688031215613bb657600080fd5b613bc087876139ac565b945060608601359350613bd560808701613b8d565b9250613be360a087016139be565b915060c0860135613bf3816139d5565b809150509295509295909350565b600060c0828403121561382957600080fd5b600080600060408486031215613c2857600080fd5b613c318461370e565b9250602084013567ffffffffffffffff80821115613c4e57600080fd5b818601915086601f830112613c6257600080fd5b813581811115613c7157600080fd5b8760208260061b850101111561379a57600080fd5b600080600060608486031215613c9b57600080fd5b613ca4846139be565b9250613cb2602085016139be565b9150604084013590509250925092565b600080600080600080600060c0888a031215613cdd57600080fd5b87359650613ced60208901613b8d565b9550613cfb6040890161370e565b9450613d09606089016139be565b93506080880135925060a088013567ffffffffffffffff811115613d2c57600080fd5b613d388a828b016139eb565b989b979a50959850939692959293505050565b600060208284031215613d5d57600080fd5b813561264c81613aea565b60008060008385036080811215613d7e57600080fd5b843567ffffffffffffffff811115613d9557600080fd5b613da187828801613817565b9450506040601f1982011215613db657600080fd5b50602084019150613dc9606085016139be565b90509250925092565b8051825267ffffffffffffffff60208201511660208301526040810151612a39604084018280518252602090810151910152565b60c08101613e148285613dd2565b82516080830152602083015160a083015261264c565b60008060408385031215613e3d57600080fd5b613e46836139be565b91506020830135613b3f816139d5565b613e608185613dd2565b82516080820152602083015160a082015260e060c082015268ffffffffffffffffff82511660e0820152600060208301516040610100840152613ea7610120840182613888565b9695505050505050565b60008060408385031215613ec457600080fd5b82359150613ed460208401613b8d565b90509250929050565b600060208284031215613eef57600080fd5b61264c826139be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613f6857600080fd5b813561264c816139d5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fd357613fd3613f73565b5060010190565b63ffffffff8316815260406020820152600061322f60408301846137ad565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261402e57600080fd5b83018035915067ffffffffffffffff82111561404957600080fd5b602001915036819003821315613a2d57600080fd5b60006020828403121561407057600080fd5b815161264c816139d5565b67ffffffffffffffff82811682821603908082111561342557613425613f73565b808202600082127f8000000000000000000000000000000000000000000000000000000000000000841416156140d4576140d4613f73565b81810583148215176125c3576125c3613f73565b6001600160a01b038516815283602082015261ffff83166040820152608060608201526000613ea76080830184613888565b7fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b16600482015282601882015260008251614188816038850160208701613864565b9190910160380195945050505050565b86815260ff8616602082015263ffffffff851660408201526001600160a01b038416606082015282608082015260c060a082015260006141db60c0830184613888565b98975050505050505050565b67ffffffffffffffff81811683821601908082111561342557613425613f73565b6001600160a01b03815116825263ffffffff60208201511660208301526040810151604083015267ffffffffffffffff60608201511660608301526000608082015160c0608085015261425e60c0850182613888565b905060a083015184820360a0860152612f638282613888565b60408152600061428a6040830185614208565b905082151560208301529392505050565b6040805190810167ffffffffffffffff811182821017156142be576142be613ef8565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156142ed576142ed613ef8565b604052919050565b60006040828403121561430757600080fd5b61430f61429b565b9050815181526020820151602082015292915050565b60006040828403121561433757600080fd5b61264c83836142f5565b60c081016001600160a01b0380614357856139be565b16835280614367602086016139be565b1660208401528061437a604086016139be565b1660408401528061438d606086016139be565b166060840152806143a0608086016139be565b166080840152806143b360a086016139be565b1660a08401525092915050565b63ffffffff848116825260406020808401829052838201859052600092869160608601855b8881101561442557836143f78661370e565b16825282850135614407816139d5565b67ffffffffffffffff168284015293850193908501906001016143e5565b509998505050505050505050565b7fffffffff000000000000000000000000000000000000000000000000000000008660e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660048201528360188201528183603883013760009101603801908152949350505050565b6001600160a01b038616815284602082015261ffff8416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006040828403121561450857600080fd5b61451061429b565b82358152602083013560208201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c820152600082516145c581602c850160208701613864565b91909101602c0195945050505050565b818103818111156125c3576125c3613f73565b6080815260006145fb6080830186614208565b9050614614602083018580518252602090810151910152565b6001600160a01b0383166060830152949350505050565b60006080828403121561463d57600080fd5b6040516060810181811067ffffffffffffffff8211171561466057614660613ef8565b806040525080915082518152602083015161467a816139d5565b602082015261468c84604085016142f5565b60408201525092915050565b6000608082840312156146aa57600080fd5b61264c838361462b565b60008060a083850312156146c757600080fd5b6146d1848461462b565b9150608083015167ffffffffffffffff808211156146ee57600080fd5b908401906040828703121561470257600080fd5b61470a61429b565b825168ffffffffffffffffff8116811461472357600080fd5b81526020838101518381111561473857600080fd5b80850194505087601f85011261474d57600080fd5b83518381111561475f5761475f613ef8565b61477182601f19601f840116016142c4565b9350808452888282870101111561478757600080fd5b61479681838601848801613864565b5081019190915292959294509192505050565b600082516147bb818460208701613864565b9190910192915050565b6000602082840312156147d757600080fd5b815161264c81613aea56fea26469706673582212201a697c02fea5e231ac66a1bd734f49066fcba68c2b1825a5e4bbbdeff656950364736f6c63430008160033",
1514
- "deployedBytecode": "0x6080604052600436106101e35760003560e01c80637260753711610102578063bedb86fb11610095578063cc32d17611610064578063cc32d17614610718578063d621ad3f14610752578063f2fde38b1461078a578063fc0c546a146107aa57600080fd5b8063bedb86fb14610695578063c7c7f5b3146106b5578063c859c483146106d6578063cbef2aa9146106f657600080fd5b80639f68b964116100d15780639f68b96414610624578063a7229fd914610640578063a88835d714610660578063b0d7ca5d1461068057600080fd5b80637260753714610569578063857749b0146105b25780638da5cb5b146105e65780639561b12f1461060457600080fd5b806338da6b8e1161017a578063461bb0b911610149578063461bb0b9146104c55780635114bf09146104e55780635e280f1114610508578063715018a61461055457600080fd5b806338da6b8e146104085780633b6f743b146104585780633faa12c514610485578063434def55146104a557600080fd5b8063200d2ed2116101b6578063200d2ed2146102aa578063203bd15f146102dd5780632bc5114c146102ff578063341a4648146103f557600080fd5b80630141e41b146101e85780630d35b4151461021e578063156a0d0f1461024d57806316909bca1461028e575b600080fd5b3480156101f457600080fd5b50610208610203366004613727565b6107de565b6040516102159190613804565b60405180910390f35b34801561022a57600080fd5b5061023e61023936600461382f565b610a63565b604051610215939291906138b4565b34801561025957600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526000602082015201610215565b34801561029a57600080fd5b506001604051610215919061396b565b3480156102b657600080fd5b506001546102cb90600160a01b900460ff1681565b60405160ff9091168152602001610215565b3480156102e957600080fd5b506102fd6102f8366004613a34565b610f5f565b005b34801561030b57600080fd5b506103946040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526001546001600160a01b03908116825260045481166020830152600654811692820192909252600554821660608201526002548216608082015260035490911660a082015290565b6040516102159190600060c0820190506001600160a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b6102fd610403366004613ab6565b61125d565b34801561041457600080fd5b5061043f610423366004613acf565b60076020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610215565b34801561046457600080fd5b50610478610473366004613af8565b611337565b6040516102159190613b4a565b34801561049157600080fd5b506102fd6104a0366004613b61565b6115e4565b3480156104b157600080fd5b506102fd6104c0366004613b9e565b6116b8565b3480156104d157600080fd5b506102fd6104e0366004613c01565b611925565b3480156104f157600080fd5b506104fa611ad3565b604051908152602001610215565b34801561051457600080fd5b5061053c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610215565b34801561056057600080fd5b506102fd611ae2565b34801561057557600080fd5b5061059d7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610215565b3480156105be57600080fd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105f257600080fd5b506000546001600160a01b031661053c565b34801561061057600080fd5b506102fd61061f366004613c13565b611af6565b34801561063057600080fd5b5060405160018152602001610215565b34801561064c57600080fd5b506104fa61065b366004613c86565b611c5b565b34801561066c57600080fd5b506102fd61067b366004613cc2565b611d84565b34801561068c57600080fd5b506102fd611faf565b3480156106a157600080fd5b506102fd6106b0366004613d4b565b612059565b6106c86106c3366004613d68565b612114565b604051610215929190613e06565b3480156106e257600080fd5b506102fd6106f1366004613e2a565b612148565b610709610704366004613d68565b612243565b60405161021593929190613e56565b34801561072457600080fd5b5060015461043f907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b34801561075e57600080fd5b506104fa61076d366004613eb1565b600860209081526000928352604080842090915290825290205481565b34801561079657600080fd5b506102fd6107a5366004613edd565b612428565b3480156107b657600080fd5b5061053c7f000000000000000000000000000000000000000000000000000000000000000081565b60018054606091600160a01b90910460ff161461085657600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556002546001600160a01b03163381146108a657604051635bd25eff60e01b815260040160405180910390fd5b60008367ffffffffffffffff8111156108c1576108c1613ef8565b60405190808252806020026020018201604052801561090657816020015b60408051808201909152600080825260208201528152602001906001900390816108df5790505b5090506000805b85811015610a08573687878381811061092857610928613f27565b905060600201905060006109928260200160208101906109489190613f56565b6109586060850160408601613f56565b600760006109696020880188613acf565b63ffffffff1663ffffffff1681526020019081526020016000206124d49092919063ffffffff16565b905067ffffffffffffffff8116156109fe5760408051808201909152806109bc6020850185613acf565b63ffffffff16815267ffffffffffffffff831660209091015285856109e081613fa2565b9650815181106109f2576109f2613f27565b60200260200101819052505b505060010161090d565b508082527fce105e156370093e6600169f7c01277f740d45fbcf95435227ce6f43ad0c3abd8783604051610a3d929190613fda565b60405180910390a1509150506001805460ff60a01b1916600160a01b1790559392505050565b60408051808201909152600080825260208201526060610a96604051806040016040528060008152602001600081525090565b60408051808201909152807f00000000000000000000000000000000000000000000000000000000000000008152602001610b3160076000886000016020810190610ae19190613acf565b63ffffffff16815260208101919091526040016000205467ffffffffffffffff1667ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81525092506000610b5e8460200151866040013511610b54578560400135612589565b8460200151612589565b90506000610b8e610b726020880188613acf565b83610b89610b8360c08b018b613ff9565b15919050565b6125c9565b600154604080517f81993cd000000000000000000000000000000000000000000000000000000000815283516001600160a01b039081166004830152602085015163ffffffff1660248301529184015167ffffffffffffffff9081166044830152606085015116606482015260808401511515608482015260a0840151151560a48201529293506000929116906381993cd09060c401602060405180830381865afa158015610c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c65919061405e565b90508267ffffffffffffffff168167ffffffffffffffff1614610ee25760408051600180825281830190925290816020015b604080518082019091526000815260606020820152815260200190600190039081610c975790505094508267ffffffffffffffff168167ffffffffffffffff161015610db9576040518060400160405280610d2e610d298487610cfa919061407b565b67ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b612653565b610d58907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61409c565b81526020016040518060400160405280600c81526020017f70726f746f636f6c20666565000000000000000000000000000000000000000081525081525085600081518110610da957610da9613f27565b6020026020010181905250610ee2565b8267ffffffffffffffff168167ffffffffffffffff161115610ee2576000610de1848361407b565b9091039050600067ffffffffffffffff84811690831603610e42576040805160008082526020820190925290610e3a565b604080518082019091526000815260606020820152815260200190600190039081610e125790505b509550610ee0565b6040518060400160405280610e83610d298467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020016040518060400160405280600681526020017f726577617264000000000000000000000000000000000000000000000000000081525081525086600081518110610ed457610ed4613f27565b60200260200101819052505b505b6040518060400160405280610f208567ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416029052959794965050505050565b60018054600160a01b900460ff1614610fa157600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556005546001600160a01b0316338114610ff157604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff84167f000000000000000000000000000000000000000000000000000000000000000002821580159060609061108a5761108761103d60608c0160408d01613f56565b61104a60208d018d613acf565b8589898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061270992505050565b90505b6000611096898561273b565b9050801561119f578215611143576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611110908c908e9060009088906004016140e8565b600060405180830381600087803b15801561112a57600080fd5b505af115801561113e573d6000803e3d6000fd5b505050505b6001600160a01b0389168a7fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61117c60208f018f613acf565b6040805163ffffffff9092168252602082018990520160405180910390a361123d565b6111ac60208c018c613acf565b8985846040516020016111c2949392919061411a565b60408051601f19818403018152918152815160209283012060008d8152600884528281208180528452918220557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b55918c919061121f908f018f613acf565b8c888760405161123496959493929190614198565b60405180910390a15b50506001805460ff60a01b1916600160a01b179055505050505050505050565b6006546001600160a01b031633811461128957604051635bd25eff60e01b815260040160405180910390fd5b611292826127e2565b600061129e338461281a565b905080600160158282829054906101000a900467ffffffffffffffff166112c591906141e7565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa064a2faa279f4d67c85c8fc69d4ebb7de2739a9e6dd864dfdd1b9e066d4bfd08160405161132a919067ffffffffffffffff91909116815260200190565b60405180910390a1505050565b6040805180820190915260008082526020820152600061135a8460400135612589565b90508067ffffffffffffffff166000036113a0576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113b2610b8360c0870187613ff9565b90508015611520576005546040805160c081019091523381526001600160a01b0390911690633292cf02906020808201906113ef908a018a613acf565b63ffffffff1681526020898101359082015267ffffffffffffffff8616604082015260600161142160a08a018a613ff9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161146860808a018a613ff9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526114d991908890600401614277565b6040805180830381865afa1580156114f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115199190614325565b92506115dc565b6000806115306080880188613ff9565b60055492109250506001600160a01b03166375d2208c6115536020890189613acf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015283151560248201526044016040805180830381865afa1580156115b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d89190614325565b9350505b505092915050565b6115ec612900565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168263ffffffff1603611651576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff808316600090815260076020526040902061167391839061297416565b6040805163ffffffff8416815282151560208201527faf6b8dd4c5a827e03f548d06181b36aaba61e22436ff1cfa9bc409d576366a6091015b60405180910390a15050565b60018054600160a01b900460ff16146116fa57600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556005546001600160a01b031633811461174a57604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff82167f0000000000000000000000000000000000000000000000000000000000000000026000611783858361273b565b905080156117e7576001600160a01b038516877fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6117c460208c018c613acf565b6040805163ffffffff9092168252602082018790520160405180910390a3611908565b6117f46020890189613acf565b60405160e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166020820152606086901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660248201526038810183905260580160408051601f19818403018152918152815160209283012060008a81526008845282812060ff8b168252845291909120557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b5590889088906118bc908c018c613acf565b6040805193845260ff909216602084015263ffffffff16908201526001600160a01b03871660608201526080810184905260c060a0820181905260009082015260e00160405180910390a15b50506001805460ff60a01b1916600160a01b179055505050505050565b61192d612900565b61193a6020820182613edd565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119776040820160208301613edd565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119b46060820160408301613edd565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119f16080820160608301613edd565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611a2e60a0820160808301613edd565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611a6b60c0820160a08301613edd565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040517f9774229668135b546675daf425e41c0848f60aa32d0951881245f4f528cc33f090611ac8908390614341565b60405180910390a150565b6000611add612a3e565b905090565b611aea612900565b611af46000612aad565b565b60018054600160a01b900460ff1614611b3857600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556002546001600160a01b0316338114611b8857604051635bd25eff60e01b815260040160405180910390fd5b60005b82811015611c065736848483818110611ba657611ba6613f27565b9050604002019050611bfd816020016020810190611bc49190613f56565b60076000611bd56020860186613acf565b63ffffffff1663ffffffff168152602001908152602001600020612b0a90919063ffffffff16565b50600101611b8b565b507f10c5f2b007767d266c6c75c86ae9ed0c74e6320b30bda231af7396a990e7263c848484604051611c3a939291906143c0565b60405180910390a150506001805460ff60a01b1916600160a01b1790555050565b60018054600091600160a01b90910460ff1614611ca157600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556006546001600160a01b0316338114611cf157604051635bd25eff60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611d5c576040517f809fc44b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d698585856000612ba4565b50506001805460ff60a01b1916600160a01b17905592915050565b60018054600160a01b900460ff1614611dc657600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b191674020000000000000000000000000000000000000000179055604051611e039086908690869086908690602001614433565b60408051601f19818403018152918152815160209283012060008a81526008845282812060ff8b16825290935291205414611e6a576040517faba8b6ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600087815260086020908152604080832060ff8a168452909152812055611e918484612bec565b611ea0611e9d84612589565b50565b8015611f47576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611f149087908b90600090889088906004016144a5565b600060405180830381600087803b158015611f2e57600080fd5b505af1158015611f42573d6000803e3d6000fd5b505050505b6040805163ffffffff87168152602081018590526001600160a01b0386169189917fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c910160405180910390a350506001805460ff60a01b1916600160a01b1790555050505050565b6004546001600160a01b0316338114611fdb57604051635bd25eff60e01b815260040160405180910390fd5b6000611fe5612a3e565b9050611ff333826000612c31565b612029576040517f3c2f177d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527f19e23b96a5e0d494b59baca97d1fe386cf8e80a978dfd8845d25f1a9d5c7e183906020016116ac565b6004546001600160a01b031633811461208557604051635bd25eff60e01b815260040160405180910390fd5b600154600119600160a01b90910460ff16016120b4576040516376a9ad7360e01b815260040160405180910390fd5b816120c05760016120c3565b60035b6001805460ff92909216600160a01b0260ff60a01b1990921691909117905560405182151581527f878ac8a2ca79520471f8f3c8494fa802c03ce3bf034252aad7f22318984fdbdb906020016116ac565b61211c6136c6565b604080518082019091526000808252602082015261213b858585612243565b5090969095509350505050565b6006546001600160a01b031633811461217457604051635bd25eff60e01b815260040160405180910390fd5b81600160158282829054906101000a900467ffffffffffffffff16612199919061407b565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506121fb836121f68467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b612bec565b604080516001600160a01b038516815267ffffffffffffffff841660208201527fa46907b6b80b882da80d6e36cc905dde57fafff0a5442c8898526fe952d1e653910161132a565b61224b6136c6565b604080518082019091526000808252602082015260408051808201909152600081526060602082015260018054600160a01b900460ff16146122b657600154600119600160a01b90910460ff1601610824576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b191674020000000000000000000000000000000000000000179055600080806122e789612cea565b925092509250604051806040016040528061232b8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff84160290529450600061237c612375368b90038b018b6144f6565b8751612d88565b90508315612397576123908a82848b612ddd565b96506123a9565b6123a38a82848b612f6c565b90975094505b865133907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a6123db60208e018e613acf565b89516020808c01516040805163ffffffff90951685529184019290925282015260600160405180910390a350506001805460ff60a01b1916600160a01b1790555092969195509350915050565b612430612900565b6001600160a01b0381166124cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b611e9d81612aad565b825460009067ffffffffffffffff1667fffffffffffffffe198101612525576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168367ffffffffffffffff1610156125815782810367ffffffffffffffff8082169086161161255e5784612560565b805b865467ffffffffffffffff191681840367ffffffffffffffff161787559250505b509392505050565b60006125c37f000000000000000000000000000000000000000000000000000000000000000083816125bd576125bd614528565b04613168565b92915050565b6040805160c08082018352600080835260208084018290528385018290526060808501839052608080860184905260a09586018490528651948501875233855263ffffffff8a1685840181905267ffffffffffffffff8a8116878a0152928601859052845260079092529490912054841690931492810192909252821515908201525b9392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612705576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016124c2565b5090565b6060848484846040516020016127229493929190614557565b6040516020818303038152906040529050949350505050565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390526000917f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b1580156127c357600080fd5b505af19250505080156127d4575060015b156125c35750600192915050565b3415611e9d576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061282582612589565b90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166379cc6790847f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8516026040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156128e257600080fd5b505af11580156128f6573d6000803e3d6000fd5b5050505092915050565b6000546001600160a01b03163314611af4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016124c2565b815467ffffffffffffffff1681156129e65767ffffffffffffffff8116156129c8576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff178355505050565b67ffffffffffffffff81811614612a29576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191683555b505050565b600154600090479067ffffffffffffffff7501000000000000000000000000000000000000000000909104167f00000000000000000000000000000000000000000000000000000000000000000281811015612aa357612a9e81836145d5565b612aa6565b60005b9250505090565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b815467ffffffffffffffff1667fffffffffffffffe198101612b2b57505050565b612b3582826141e7565b905067fffffffffffffffe1967ffffffffffffffff821601612b83576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff919091161790915550565b612bb084848484613202565b612be6576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000612bf8838361273b565b905080612a39576040517f06a6167e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081612c8c576040516001600160a01b038516908490600081818185875af1925050503d8060008114612c81576040519150601f19603f3d011682016040523d82523d6000602084013e612c86565b606091505b50612ce1565b6040516001600160a01b038516906108fc9085906000818181858888f193505050503d8060008114612cda576040519150601f19603f3d011682016040523d82523d6000602084013e612cdf565b606091505b505b50949350505050565b60008080612cfe610b8360c0860186613ff9565b9250612d0e33856040013561281a565b91506000612d29612d226020870187613acf565b84866125c9565b9050612d4181612d3c8760600135612589565b613237565b9150612d808260076000612d5860208a018a613acf565b63ffffffff1663ffffffff16815260200190815260200160002061342c90919063ffffffff16565b509193909250565b604080518082019091526000808252602082015282513414612dd6576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090919050565b612de56136c6565b602084015115612dfc57612dfc84602001516134ba565b60055484516040805160c081019091523381526001600160a01b039092169163ff6fb3009190602080820190612e34908b018b613acf565b63ffffffff16815260208a8101359082015267ffffffffffffffff88166040820152606001612e6660a08b018b613ff9565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001612ead60808b018b613ff9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152612f209190899088906004016145e8565b60806040518083038185885af1158015612f3e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f639190614698565b95945050505050565b612f746136c6565b604080518082019091526000815260606020820152602085015115612fc5576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546040805160a081019091523381526001600160a01b03909116906385afd45390602080820190612ffa908b018b613acf565b63ffffffff16815260208a8101359082015267ffffffffffffffff88166040820152606001600061302e60808c018c613ff9565b9190911190915250604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815282516001600160a01b03166004820152602083015163ffffffff166024820152908201516044820152606082015167ffffffffffffffff1660648201526080909101511515608482015260a4016000604051808303816000875af11580156130cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f791908101906146b4565b60408201515187519294509092509080821461315d578181111561312b5781810361312486826000612c31565b505061315d565b6040517fa028531600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505094509492505050565b600067ffffffffffffffff821115612705576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f342062697473000000000000000000000000000000000000000000000000000060648201526084016124c2565b60006001600160a01b0385166132245761321d848484612c31565b905061322f565b612f6385858561352d565b949350505050565b600154604080517f43d9564d00000000000000000000000000000000000000000000000000000000815284516001600160a01b039081166004830152602086015163ffffffff1660248301529185015167ffffffffffffffff9081166044830152606086015116606482015260808501511515608482015260a0850151151560a482015260009291909116906343d9564d9060c4016020604051808303816000875af11580156132eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330f919061405e565b604084015190915067ffffffffffffffff808216908316101561339657613336828261407b565b6001805460159061336b9084907501000000000000000000000000000000000000000000900467ffffffffffffffff166141e7565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506133c4565b8067ffffffffffffffff168267ffffffffffffffff1611156133c45760006133be828461407b565b90920391505b8267ffffffffffffffff168267ffffffffffffffff1610806133ee575067ffffffffffffffff8216155b15613425576040517fa1e8654500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b815467ffffffffffffffff1667fffffffffffffffe19810161344d57505050565b8167ffffffffffffffff168167ffffffffffffffff16101561349b576040517f2b4d0ad500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191691900367ffffffffffffffff16179055565b6003546001600160a01b0316806134fd576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61352981337f0000000000000000000000000000000000000000000000000000000000000000856135d9565b5050565b6040516001600160a01b03831660248201526044810182905260009061322f9085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526135e5565b612bb084848484613672565b6000806000846001600160a01b03168460405161360291906147a9565b6000604051808303816000865af19150503d806000811461363f576040519150601f19603f3d011682016040523d82523d6000602084013e613644565b606091505b509150915081613655576000612f63565b80511580612f63575080806020019051810190612f6391906147c5565b6040516001600160a01b0380851660248301528316604482015260648101829052600090612f639086907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613575565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001613709604051806040016040528060008152602001600081525090565b905290565b803563ffffffff8116811461372257600080fd5b919050565b60008060006040848603121561373c57600080fd5b6137458461370e565b9250602084013567ffffffffffffffff8082111561376257600080fd5b818601915086601f83011261377657600080fd5b81358181111561378557600080fd5b87602060608302850101111561379a57600080fd5b6020830194508093505050509250925092565b60008151808452602080850194506020840160005b838110156137f9578151805163ffffffff16885283015167ffffffffffffffff1683880152604090960195908201906001016137c2565b509495945050505050565b60208152600061264c60208301846137ad565b600060e0828403121561382957600080fd5b50919050565b60006020828403121561384157600080fd5b813567ffffffffffffffff81111561385857600080fd5b61322f84828501613817565b60005b8381101561387f578181015183820152602001613867565b50506000910152565b600081518084526138a0816020860160208601613864565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b8381101561394d578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4001855281518051885283015183880187905261393a87890182613888565b97505093820193908201906001016138f0565b5050875160608801525050506020850151608085015250905061322f565b60208101600283106139a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006060828403121561382957600080fd5b80356001600160a01b038116811461372257600080fd5b67ffffffffffffffff81168114611e9d57600080fd5b60008083601f8401126139fd57600080fd5b50813567ffffffffffffffff811115613a1557600080fd5b602083019150836020828501011115613a2d57600080fd5b9250929050565b60008060008060008060e08789031215613a4d57600080fd5b613a5788886139ac565b955060608701359450613a6c608088016139be565b935060a0870135613a7c816139d5565b925060c087013567ffffffffffffffff811115613a9857600080fd5b613aa489828a016139eb565b979a9699509497509295939492505050565b600060208284031215613ac857600080fd5b5035919050565b600060208284031215613ae157600080fd5b61264c8261370e565b8015158114611e9d57600080fd5b60008060408385031215613b0b57600080fd5b823567ffffffffffffffff811115613b2257600080fd5b613b2e85828601613817565b9250506020830135613b3f81613aea565b809150509250929050565b8151815260208083015190820152604081016125c3565b60008060408385031215613b7457600080fd5b613b7d8361370e565b91506020830135613b3f81613aea565b803560ff8116811461372257600080fd5b600080600080600060e08688031215613bb657600080fd5b613bc087876139ac565b945060608601359350613bd560808701613b8d565b9250613be360a087016139be565b915060c0860135613bf3816139d5565b809150509295509295909350565b600060c0828403121561382957600080fd5b600080600060408486031215613c2857600080fd5b613c318461370e565b9250602084013567ffffffffffffffff80821115613c4e57600080fd5b818601915086601f830112613c6257600080fd5b813581811115613c7157600080fd5b8760208260061b850101111561379a57600080fd5b600080600060608486031215613c9b57600080fd5b613ca4846139be565b9250613cb2602085016139be565b9150604084013590509250925092565b600080600080600080600060c0888a031215613cdd57600080fd5b87359650613ced60208901613b8d565b9550613cfb6040890161370e565b9450613d09606089016139be565b93506080880135925060a088013567ffffffffffffffff811115613d2c57600080fd5b613d388a828b016139eb565b989b979a50959850939692959293505050565b600060208284031215613d5d57600080fd5b813561264c81613aea565b60008060008385036080811215613d7e57600080fd5b843567ffffffffffffffff811115613d9557600080fd5b613da187828801613817565b9450506040601f1982011215613db657600080fd5b50602084019150613dc9606085016139be565b90509250925092565b8051825267ffffffffffffffff60208201511660208301526040810151612a39604084018280518252602090810151910152565b60c08101613e148285613dd2565b82516080830152602083015160a083015261264c565b60008060408385031215613e3d57600080fd5b613e46836139be565b91506020830135613b3f816139d5565b613e608185613dd2565b82516080820152602083015160a082015260e060c082015268ffffffffffffffffff82511660e0820152600060208301516040610100840152613ea7610120840182613888565b9695505050505050565b60008060408385031215613ec457600080fd5b82359150613ed460208401613b8d565b90509250929050565b600060208284031215613eef57600080fd5b61264c826139be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613f6857600080fd5b813561264c816139d5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fd357613fd3613f73565b5060010190565b63ffffffff8316815260406020820152600061322f60408301846137ad565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261402e57600080fd5b83018035915067ffffffffffffffff82111561404957600080fd5b602001915036819003821315613a2d57600080fd5b60006020828403121561407057600080fd5b815161264c816139d5565b67ffffffffffffffff82811682821603908082111561342557613425613f73565b808202600082127f8000000000000000000000000000000000000000000000000000000000000000841416156140d4576140d4613f73565b81810583148215176125c3576125c3613f73565b6001600160a01b038516815283602082015261ffff83166040820152608060608201526000613ea76080830184613888565b7fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b16600482015282601882015260008251614188816038850160208701613864565b9190910160380195945050505050565b86815260ff8616602082015263ffffffff851660408201526001600160a01b038416606082015282608082015260c060a082015260006141db60c0830184613888565b98975050505050505050565b67ffffffffffffffff81811683821601908082111561342557613425613f73565b6001600160a01b03815116825263ffffffff60208201511660208301526040810151604083015267ffffffffffffffff60608201511660608301526000608082015160c0608085015261425e60c0850182613888565b905060a083015184820360a0860152612f638282613888565b60408152600061428a6040830185614208565b905082151560208301529392505050565b6040805190810167ffffffffffffffff811182821017156142be576142be613ef8565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156142ed576142ed613ef8565b604052919050565b60006040828403121561430757600080fd5b61430f61429b565b9050815181526020820151602082015292915050565b60006040828403121561433757600080fd5b61264c83836142f5565b60c081016001600160a01b0380614357856139be565b16835280614367602086016139be565b1660208401528061437a604086016139be565b1660408401528061438d606086016139be565b166060840152806143a0608086016139be565b166080840152806143b360a086016139be565b1660a08401525092915050565b63ffffffff848116825260406020808401829052838201859052600092869160608601855b8881101561442557836143f78661370e565b16825282850135614407816139d5565b67ffffffffffffffff168284015293850193908501906001016143e5565b509998505050505050505050565b7fffffffff000000000000000000000000000000000000000000000000000000008660e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660048201528360188201528183603883013760009101603801908152949350505050565b6001600160a01b038616815284602082015261ffff8416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006040828403121561450857600080fd5b61451061429b565b82358152602083013560208201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c820152600082516145c581602c850160208701613864565b91909101602c0195945050505050565b818103818111156125c3576125c3613f73565b6080815260006145fb6080830186614208565b9050614614602083018580518252602090810151910152565b6001600160a01b0383166060830152949350505050565b60006080828403121561463d57600080fd5b6040516060810181811067ffffffffffffffff8211171561466057614660613ef8565b806040525080915082518152602083015161467a816139d5565b602082015261468c84604085016142f5565b60408201525092915050565b6000608082840312156146aa57600080fd5b61264c838361462b565b60008060a083850312156146c757600080fd5b6146d1848461462b565b9150608083015167ffffffffffffffff808211156146ee57600080fd5b908401906040828703121561470257600080fd5b61470a61429b565b825168ffffffffffffffffff8116811461472357600080fd5b81526020838101518381111561473857600080fd5b80850194505087601f85011261474d57600080fd5b83518381111561475f5761475f613ef8565b61477182601f19601f840116016142c4565b9350808452888282870101111561478757600080fd5b61479681838601848801613864565b5081019190915292959294509192505050565b600082516147bb818460208701613864565b9190910192915050565b6000602082840312156147d757600080fd5b815161264c81613aea56fea26469706673582212201a697c02fea5e231ac66a1bd734f49066fcba68c2b1825a5e4bbbdeff656950364736f6c63430008160033",
1508
+ "bytecode": "0x6101206040526001805460ff60a01b1916600160a01b1790553480156200002557600080fd5b5060405162004c3138038062004c31833981016040819052620000489162000228565b83846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000088573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ae919062000285565b848484620000bc33620001a9565b6001600160a01b03851660805260ff8084169085161015620000f157604051632e4b554360e01b815260040160405180910390fd5b620000fd8385620002c0565b6200010a90600a620003df565b60c05260ff831660a0526001600160a01b03821660e08190526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa1580156200015f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001859190620003f0565b63ffffffff16610100526200019a81620001a9565b50505050505050505062000418565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200021157600080fd5b919050565b805160ff811681146200021157600080fd5b600080600080608085870312156200023f57600080fd5b6200024a85620001f9565b93506200025a6020860162000216565b92506200026a60408601620001f9565b91506200027a60608601620001f9565b905092959194509250565b6000602082840312156200029857600080fd5b620002a38262000216565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620002dc57620002dc620002aa565b92915050565b600181815b8085111562000323578160001904821115620003075762000307620002aa565b808516156200031557918102915b93841c9390800290620002e7565b509250929050565b6000826200033c57506001620002dc565b816200034b57506000620002dc565b81600181146200036457600281146200036f576200038f565b6001915050620002dc565b60ff841115620003835762000383620002aa565b50506001821b620002dc565b5060208310610133831016604e8410600b8410161715620003b4575081810a620002dc565b620003c08383620002e2565b8060001904821115620003d757620003d7620002aa565b029392505050565b6000620002a360ff8416836200032b565b6000602082840312156200040357600080fd5b815163ffffffff81168114620002a357600080fd5b60805160a05160c05160e05161010051614756620004db6000396000818161057501526115e8015260008181610514015281816110ce01528181611e960152613455015260008181610a9d01528181610b0801528181610d0001528181610e5a01528181610ef701528181610f2101528181610ff8015281816117510152818161215201528181612287015281816122b10152818161250f01526127d8015260006105be0152600081816107b6015281816126fc01526127b001526147566000f3fe6080604052600436106101e35760003560e01c80637260753711610102578063bedb86fb11610095578063cc32d17611610064578063cc32d17614610712578063d621ad3f1461074c578063f2fde38b14610784578063fc0c546a146107a457600080fd5b8063bedb86fb1461068f578063c7c7f5b3146106af578063c859c483146106d0578063cbef2aa9146106f057600080fd5b80639f68b964116100d15780639f68b9641461061e578063a7229fd91461063a578063a88835d71461065a578063b0d7ca5d1461067a57600080fd5b80637260753714610563578063857749b0146105ac5780638da5cb5b146105e05780639561b12f146105fe57600080fd5b806338da6b8e1161017a578063461bb0b911610149578063461bb0b9146104c55780635114bf09146104e55780635e280f1114610502578063715018a61461054e57600080fd5b806338da6b8e146104085780633b6f743b146104585780633faa12c514610485578063434def55146104a557600080fd5b8063200d2ed2116101b6578063200d2ed2146102aa578063203bd15f146102dd5780632bc5114c146102ff578063341a4648146103f557600080fd5b80630141e41b146101e85780630d35b4151461021e578063156a0d0f1461024d57806316909bca1461028e575b600080fd5b3480156101f457600080fd5b50610208610203366004613678565b6107d8565b6040516102159190613755565b60405180910390f35b34801561022a57600080fd5b5061023e610239366004613780565b610a5d565b60405161021593929190613805565b34801561025957600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526000602082015201610215565b34801561029a57600080fd5b50600160405161021591906138bc565b3480156102b657600080fd5b506001546102cb90600160a01b900460ff1681565b60405160ff9091168152602001610215565b3480156102e957600080fd5b506102fd6102f8366004613985565b610f59565b005b34801561030b57600080fd5b506103946040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526001546001600160a01b03908116825260045481166020830152600654811692820192909252600554821660608201526002548216608082015260035490911660a082015290565b6040516102159190600060c0820190506001600160a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b6102fd610403366004613a07565b611257565b34801561041457600080fd5b5061043f610423366004613a20565b60076020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610215565b34801561046457600080fd5b50610478610473366004613a49565b611331565b6040516102159190613a9b565b34801561049157600080fd5b506102fd6104a0366004613ab2565b6115de565b3480156104b157600080fd5b506102fd6104c0366004613aef565b6116b2565b3480156104d157600080fd5b506102fd6104e0366004613b52565b61191f565b3480156104f157600080fd5b50475b604051908152602001610215565b34801561050e57600080fd5b506105367f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610215565b34801561055a57600080fd5b506102fd611acd565b34801561056f57600080fd5b506105977f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610215565b3480156105b857600080fd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ec57600080fd5b506000546001600160a01b0316610536565b34801561060a57600080fd5b506102fd610619366004613b64565b611ae1565b34801561062a57600080fd5b5060405160018152602001610215565b34801561064657600080fd5b506104f4610655366004613bd7565b611c46565b34801561066657600080fd5b506102fd610675366004613c13565b611d44565b34801561068657600080fd5b506102fd611f6f565b34801561069b57600080fd5b506102fd6106aa366004613c9c565b611fd8565b6106c26106bd366004613cb9565b612093565b604051610215929190613d57565b3480156106dc57600080fd5b506102fd6106eb366004613d7b565b6120c7565b6107036106fe366004613cb9565b6121c2565b60405161021593929190613da7565b34801561071e57600080fd5b5060015461043f907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b34801561075857600080fd5b506104f4610767366004613e02565b600860209081526000928352604080842090915290825290205481565b34801561079057600080fd5b506102fd61079f366004613e2e565b6123a7565b3480156107b057600080fd5b506105367f000000000000000000000000000000000000000000000000000000000000000081565b60018054606091600160a01b90910460ff161461085057600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556002546001600160a01b03163381146108a057604051635bd25eff60e01b815260040160405180910390fd5b60008367ffffffffffffffff8111156108bb576108bb613e49565b60405190808252806020026020018201604052801561090057816020015b60408051808201909152600080825260208201528152602001906001900390816108d95790505b5090506000805b85811015610a02573687878381811061092257610922613e78565b9050606002019050600061098c8260200160208101906109429190613ea7565b6109526060850160408601613ea7565b600760006109636020880188613a20565b63ffffffff1663ffffffff1681526020019081526020016000206124539092919063ffffffff16565b905067ffffffffffffffff8116156109f85760408051808201909152806109b66020850185613a20565b63ffffffff16815267ffffffffffffffff831660209091015285856109da81613ef3565b9650815181106109ec576109ec613e78565b60200260200101819052505b5050600101610907565b508082527fce105e156370093e6600169f7c01277f740d45fbcf95435227ce6f43ad0c3abd8783604051610a37929190613f2b565b60405180910390a1509150506001805460ff60a01b1916600160a01b1790559392505050565b60408051808201909152600080825260208201526060610a90604051806040016040528060008152602001600081525090565b60408051808201909152807f00000000000000000000000000000000000000000000000000000000000000008152602001610b2b60076000886000016020810190610adb9190613a20565b63ffffffff16815260208101919091526040016000205467ffffffffffffffff1667ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81525092506000610b588460200151866040013511610b4e578560400135612508565b8460200151612508565b90506000610b88610b6c6020880188613a20565b83610b83610b7d60c08b018b613f4a565b15919050565b612548565b600154604080517f81993cd000000000000000000000000000000000000000000000000000000000815283516001600160a01b039081166004830152602085015163ffffffff1660248301529184015167ffffffffffffffff9081166044830152606085015116606482015260808401511515608482015260a0840151151560a48201529293506000929116906381993cd09060c401602060405180830381865afa158015610c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5f9190613faf565b90508267ffffffffffffffff168167ffffffffffffffff1614610edc5760408051600180825281830190925290816020015b604080518082019091526000815260606020820152815260200190600190039081610c915790505094508267ffffffffffffffff168167ffffffffffffffff161015610db3576040518060400160405280610d28610d238487610cf49190613fcc565b67ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b6125d2565b610d52907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613fed565b81526020016040518060400160405280600c81526020017f70726f746f636f6c20666565000000000000000000000000000000000000000081525081525085600081518110610da357610da3613e78565b6020026020010181905250610edc565b8267ffffffffffffffff168167ffffffffffffffff161115610edc576000610ddb8483613fcc565b9091039050600067ffffffffffffffff84811690831603610e3c576040805160008082526020820190925290610e34565b604080518082019091526000815260606020820152815260200190600190039081610e0c5790505b509550610eda565b6040518060400160405280610e7d610d238467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020016040518060400160405280600681526020017f726577617264000000000000000000000000000000000000000000000000000081525081525086600081518110610ece57610ece613e78565b60200260200101819052505b505b6040518060400160405280610f1a8567ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416029052959794965050505050565b60018054600160a01b900460ff1614610f9b57600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556005546001600160a01b0316338114610feb57604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff84167f00000000000000000000000000000000000000000000000000000000000000000282158015906060906110845761108161103760608c0160408d01613ea7565b61104460208d018d613a20565b8589898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061268892505050565b90505b600061109089856126ba565b9050801561119957821561113d576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061110a908c908e906000908890600401614039565b600060405180830381600087803b15801561112457600080fd5b505af1158015611138573d6000803e3d6000fd5b505050505b6001600160a01b0389168a7fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61117660208f018f613a20565b6040805163ffffffff9092168252602082018990520160405180910390a3611237565b6111a660208c018c613a20565b8985846040516020016111bc949392919061406b565b60408051601f19818403018152918152815160209283012060008d8152600884528281208180528452918220557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b55918c9190611219908f018f613a20565b8c888760405161122e969594939291906140e9565b60405180910390a15b50506001805460ff60a01b1916600160a01b179055505050505050505050565b6006546001600160a01b031633811461128357604051635bd25eff60e01b815260040160405180910390fd5b61128c82612761565b60006112983384612799565b905080600160158282829054906101000a900467ffffffffffffffff166112bf9190614138565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa064a2faa279f4d67c85c8fc69d4ebb7de2739a9e6dd864dfdd1b9e066d4bfd081604051611324919067ffffffffffffffff91909116815260200190565b60405180910390a1505050565b604080518082019091526000808252602082015260006113548460400135612508565b90508067ffffffffffffffff1660000361139a576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113ac610b7d60c0870187613f4a565b9050801561151a576005546040805160c081019091523381526001600160a01b0390911690633292cf02906020808201906113e9908a018a613a20565b63ffffffff1681526020898101359082015267ffffffffffffffff8616604082015260600161141b60a08a018a613f4a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161146260808a018a613f4a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526114d3919088906004016141c8565b6040805180830381865afa1580156114ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115139190614276565b92506115d6565b60008061152a6080880188613f4a565b60055492109250506001600160a01b03166375d2208c61154d6020890189613a20565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015283151560248201526044016040805180830381865afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d29190614276565b9350505b505092915050565b6115e661287f565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168263ffffffff160361164b576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff808316600090815260076020526040902061166d9183906128f316565b6040805163ffffffff8416815282151560208201527faf6b8dd4c5a827e03f548d06181b36aaba61e22436ff1cfa9bc409d576366a6091015b60405180910390a15050565b60018054600160a01b900460ff16146116f457600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556005546001600160a01b031633811461174457604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff82167f000000000000000000000000000000000000000000000000000000000000000002600061177d85836126ba565b905080156117e1576001600160a01b038516877fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6117be60208c018c613a20565b6040805163ffffffff9092168252602082018790520160405180910390a3611902565b6117ee6020890189613a20565b60405160e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166020820152606086901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660248201526038810183905260580160408051601f19818403018152918152815160209283012060008a81526008845282812060ff8b168252845291909120557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b5590889088906118b6908c018c613a20565b6040805193845260ff909216602084015263ffffffff16908201526001600160a01b03871660608201526080810184905260c060a0820181905260009082015260e00160405180910390a15b50506001805460ff60a01b1916600160a01b179055505050505050565b61192761287f565b6119346020820182613e2e565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119716040820160208301613e2e565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119ae6060820160408301613e2e565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119eb6080820160608301613e2e565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611a2860a0820160808301613e2e565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611a6560c0820160a08301613e2e565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040517f9774229668135b546675daf425e41c0848f60aa32d0951881245f4f528cc33f090611ac2908390614292565b60405180910390a150565b611ad561287f565b611adf60006129bd565b565b60018054600160a01b900460ff1614611b2357600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556002546001600160a01b0316338114611b7357604051635bd25eff60e01b815260040160405180910390fd5b60005b82811015611bf15736848483818110611b9157611b91613e78565b9050604002019050611be8816020016020810190611baf9190613ea7565b60076000611bc06020860186613a20565b63ffffffff1663ffffffff168152602001908152602001600020612a1a90919063ffffffff16565b50600101611b76565b507f10c5f2b007767d266c6c75c86ae9ed0c74e6320b30bda231af7396a990e7263c848484604051611c2593929190614311565b60405180910390a150506001805460ff60a01b1916600160a01b1790555050565b60018054600091600160a01b90910460ff1614611c8c57600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556006546001600160a01b0316338114611cdc57604051635bd25eff60e01b815260040160405180910390fd5b6001600160a01b038516611d1c576040517f809fc44b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d298585856000612ab4565b50506001805460ff60a01b1916600160a01b17905592915050565b60018054600160a01b900460ff1614611d8657600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b191674020000000000000000000000000000000000000000179055604051611dc39086908690869086908690602001614384565b60408051601f19818403018152918152815160209283012060008a81526008845282812060ff8b16825290935291205414611e2a576040517faba8b6ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600087815260086020908152604080832060ff8a168452909152812055611e518484612afc565b611e60611e5d84612508565b50565b8015611f07576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611ed49087908b90600090889088906004016143f6565b600060405180830381600087803b158015611eee57600080fd5b505af1158015611f02573d6000803e3d6000fd5b505050505b6040805163ffffffff87168152602081018590526001600160a01b0386169189917fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c910160405180910390a350506001805460ff60a01b1916600160a01b1790555050505050565b6004546001600160a01b0316338114611f9b57604051635bd25eff60e01b815260040160405180910390fd5b47611fa833826000612b41565b6040518181527f19e23b96a5e0d494b59baca97d1fe386cf8e80a978dfd8845d25f1a9d5c7e183906020016116a6565b6004546001600160a01b031633811461200457604051635bd25eff60e01b815260040160405180910390fd5b600154600119600160a01b90910460ff1601612033576040516376a9ad7360e01b815260040160405180910390fd5b8161203f576001612042565b60035b6001805460ff92909216600160a01b0260ff60a01b1990921691909117905560405182151581527f878ac8a2ca79520471f8f3c8494fa802c03ce3bf034252aad7f22318984fdbdb906020016116a6565b61209b613617565b60408051808201909152600080825260208201526120ba8585856121c2565b5090969095509350505050565b6006546001600160a01b03163381146120f357604051635bd25eff60e01b815260040160405180910390fd5b81600160158282829054906101000a900467ffffffffffffffff166121189190613fcc565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061217a836121758467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b612afc565b604080516001600160a01b038516815267ffffffffffffffff841660208201527fa46907b6b80b882da80d6e36cc905dde57fafff0a5442c8898526fe952d1e6539101611324565b6121ca613617565b604080518082019091526000808252602082015260408051808201909152600081526060602082015260018054600160a01b900460ff161461223557600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556000808061226689612b82565b92509250925060405180604001604052806122aa8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416029052945060006122fb6122f4368b90038b018b614447565b8751612c20565b905083156123165761230f8a82848b612c75565b9650612328565b6123228a82848b612e04565b90975094505b865133907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a61235a60208e018e613a20565b89516020808c01516040805163ffffffff90951685529184019290925282015260600160405180910390a350506001805460ff60a01b1916600160a01b1790555092969195509350915050565b6123af61287f565b6001600160a01b03811661244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b611e5d816129bd565b825460009067ffffffffffffffff1667fffffffffffffffe1981016124a4576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168367ffffffffffffffff1610156125005782810367ffffffffffffffff808216908616116124dd57846124df565b805b865467ffffffffffffffff191681840367ffffffffffffffff161787559250505b509392505050565b60006125427f0000000000000000000000000000000000000000000000000000000000000000838161253c5761253c614479565b04613000565b92915050565b6040805160c08082018352600080835260208084018290528385018290526060808501839052608080860184905260a09586018490528651948501875233855263ffffffff8a1685840181905267ffffffffffffffff8a8116878a0152928601859052845260079092529490912054841690931492810192909252821515908201525b9392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401612441565b5090565b6060848484846040516020016126a194939291906144a8565b6040516020818303038152906040529050949350505050565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390526000917f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b15801561274257600080fd5b505af1925050508015612753575060015b156125425750600192915050565b3415611e5d576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127a482612508565b90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166379cc6790847f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8516026040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561286157600080fd5b505af1158015612875573d6000803e3d6000fd5b5050505092915050565b6000546001600160a01b03163314611adf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612441565b815467ffffffffffffffff1681156129655767ffffffffffffffff811615612947576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff178355505050565b67ffffffffffffffff818116146129a8576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191683555b505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b815467ffffffffffffffff1667fffffffffffffffe198101612a3b57505050565b612a458282614138565b905067fffffffffffffffe1967ffffffffffffffff821601612a93576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff919091161790915550565b612ac08484848461309a565b612af6576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000612b0883836126ba565b9050806129b8576040517f06a6167e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b4c8383836130cf565b6129b8576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080612b96610b7d60c0860186613f4a565b9250612ba6338560400135612799565b91506000612bc1612bba6020870187613a20565b8486612548565b9050612bd981612bd48760600135612508565b613188565b9150612c188260076000612bf060208a018a613a20565b63ffffffff1663ffffffff16815260200190815260200160002061337d90919063ffffffff16565b509193909250565b604080518082019091526000808252602082015282513414612c6e576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090919050565b612c7d613617565b602084015115612c9457612c94846020015161340b565b60055484516040805160c081019091523381526001600160a01b039092169163ff6fb3009190602080820190612ccc908b018b613a20565b63ffffffff16815260208a8101359082015267ffffffffffffffff88166040820152606001612cfe60a08b018b613f4a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001612d4560808b018b613f4a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152612db8919089908890600401614526565b60806040518083038185885af1158015612dd6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dfb91906145d6565b95945050505050565b612e0c613617565b604080518082019091526000815260606020820152602085015115612e5d576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546040805160a081019091523381526001600160a01b03909116906385afd45390602080820190612e92908b018b613a20565b63ffffffff16815260208a8101359082015267ffffffffffffffff881660408201526060016000612ec660808c018c613f4a565b9190911190915250604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815282516001600160a01b03166004820152602083015163ffffffff166024820152908201516044820152606082015167ffffffffffffffff1660648201526080909101511515608482015260a4016000604051808303816000875af1158015612f67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f8f91908101906145f2565b604082015151875192945090925090808214612ff55781811115612fc357818103612fbc868260006130cf565b5050612ff5565b6040517fa028531600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505094509492505050565b600067ffffffffffffffff821115612684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f34206269747300000000000000000000000000000000000000000000000000006064820152608401612441565b60006001600160a01b0385166130bc576130b58484846130cf565b90506130c7565b612dfb85858561347e565b949350505050565b60008161312a576040516001600160a01b038516908490600081818185875af1925050503d806000811461311f576040519150601f19603f3d011682016040523d82523d6000602084013e613124565b606091505b5061317f565b6040516001600160a01b038516906108fc9085906000818181858888f193505050503d8060008114613178576040519150601f19603f3d011682016040523d82523d6000602084013e61317d565b606091505b505b50949350505050565b600154604080517f43d9564d00000000000000000000000000000000000000000000000000000000815284516001600160a01b039081166004830152602086015163ffffffff1660248301529185015167ffffffffffffffff9081166044830152606086015116606482015260808501511515608482015260a0850151151560a482015260009291909116906343d9564d9060c4016020604051808303816000875af115801561323c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132609190613faf565b604084015190915067ffffffffffffffff80821690831610156132e7576132878282613fcc565b600180546015906132bc9084907501000000000000000000000000000000000000000000900467ffffffffffffffff16614138565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550613315565b8067ffffffffffffffff168267ffffffffffffffff16111561331557600061330f8284613fcc565b90920391505b8267ffffffffffffffff168267ffffffffffffffff16108061333f575067ffffffffffffffff8216155b15613376576040517fa1e8654500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b815467ffffffffffffffff1667fffffffffffffffe19810161339e57505050565b8167ffffffffffffffff168167ffffffffffffffff1610156133ec576040517f2b4d0ad500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191691900367ffffffffffffffff16179055565b6003546001600160a01b03168061344e576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61347a81337f00000000000000000000000000000000000000000000000000000000000000008561352a565b5050565b6040516001600160a01b0383166024820152604481018290526000906130c79085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613536565b612ac0848484846135c3565b6000806000846001600160a01b03168460405161355391906146e7565b6000604051808303816000865af19150503d8060008114613590576040519150601f19603f3d011682016040523d82523d6000602084013e613595565b606091505b5091509150816135a6576000612dfb565b80511580612dfb575080806020019051810190612dfb9190614703565b6040516001600160a01b0380851660248301528316604482015260648101829052600090612dfb9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084016134c6565b604051806060016040528060008019168152602001600067ffffffffffffffff16815260200161365a604051806040016040528060008152602001600081525090565b905290565b803563ffffffff8116811461367357600080fd5b919050565b60008060006040848603121561368d57600080fd5b6136968461365f565b9250602084013567ffffffffffffffff808211156136b357600080fd5b818601915086601f8301126136c757600080fd5b8135818111156136d657600080fd5b8760206060830285010111156136eb57600080fd5b6020830194508093505050509250925092565b60008151808452602080850194506020840160005b8381101561374a578151805163ffffffff16885283015167ffffffffffffffff168388015260409096019590820190600101613713565b509495945050505050565b6020815260006125cb60208301846136fe565b600060e0828403121561377a57600080fd5b50919050565b60006020828403121561379257600080fd5b813567ffffffffffffffff8111156137a957600080fd5b6130c784828501613768565b60005b838110156137d05781810151838201526020016137b8565b50506000910152565b600081518084526137f18160208601602086016137b5565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b8381101561389e578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4001855281518051885283015183880187905261388b878901826137d9565b9750509382019390820190600101613841565b505087516060880152505050602085015160808501525090506130c7565b60208101600283106138f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006060828403121561377a57600080fd5b80356001600160a01b038116811461367357600080fd5b67ffffffffffffffff81168114611e5d57600080fd5b60008083601f84011261394e57600080fd5b50813567ffffffffffffffff81111561396657600080fd5b60208301915083602082850101111561397e57600080fd5b9250929050565b60008060008060008060e0878903121561399e57600080fd5b6139a888886138fd565b9550606087013594506139bd6080880161390f565b935060a08701356139cd81613926565b925060c087013567ffffffffffffffff8111156139e957600080fd5b6139f589828a0161393c565b979a9699509497509295939492505050565b600060208284031215613a1957600080fd5b5035919050565b600060208284031215613a3257600080fd5b6125cb8261365f565b8015158114611e5d57600080fd5b60008060408385031215613a5c57600080fd5b823567ffffffffffffffff811115613a7357600080fd5b613a7f85828601613768565b9250506020830135613a9081613a3b565b809150509250929050565b815181526020808301519082015260408101612542565b60008060408385031215613ac557600080fd5b613ace8361365f565b91506020830135613a9081613a3b565b803560ff8116811461367357600080fd5b600080600080600060e08688031215613b0757600080fd5b613b1187876138fd565b945060608601359350613b2660808701613ade565b9250613b3460a0870161390f565b915060c0860135613b4481613926565b809150509295509295909350565b600060c0828403121561377a57600080fd5b600080600060408486031215613b7957600080fd5b613b828461365f565b9250602084013567ffffffffffffffff80821115613b9f57600080fd5b818601915086601f830112613bb357600080fd5b813581811115613bc257600080fd5b8760208260061b85010111156136eb57600080fd5b600080600060608486031215613bec57600080fd5b613bf58461390f565b9250613c036020850161390f565b9150604084013590509250925092565b600080600080600080600060c0888a031215613c2e57600080fd5b87359650613c3e60208901613ade565b9550613c4c6040890161365f565b9450613c5a6060890161390f565b93506080880135925060a088013567ffffffffffffffff811115613c7d57600080fd5b613c898a828b0161393c565b989b979a50959850939692959293505050565b600060208284031215613cae57600080fd5b81356125cb81613a3b565b60008060008385036080811215613ccf57600080fd5b843567ffffffffffffffff811115613ce657600080fd5b613cf287828801613768565b9450506040601f1982011215613d0757600080fd5b50602084019150613d1a6060850161390f565b90509250925092565b8051825267ffffffffffffffff602082015116602083015260408101516129b8604084018280518252602090810151910152565b60c08101613d658285613d23565b82516080830152602083015160a08301526125cb565b60008060408385031215613d8e57600080fd5b613d978361390f565b91506020830135613a9081613926565b613db18185613d23565b82516080820152602083015160a082015260e060c082015268ffffffffffffffffff82511660e0820152600060208301516040610100840152613df86101208401826137d9565b9695505050505050565b60008060408385031215613e1557600080fd5b82359150613e2560208401613ade565b90509250929050565b600060208284031215613e4057600080fd5b6125cb8261390f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613eb957600080fd5b81356125cb81613926565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f2457613f24613ec4565b5060010190565b63ffffffff831681526040602082015260006130c760408301846136fe565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f7f57600080fd5b83018035915067ffffffffffffffff821115613f9a57600080fd5b60200191503681900382131561397e57600080fd5b600060208284031215613fc157600080fd5b81516125cb81613926565b67ffffffffffffffff82811682821603908082111561337657613376613ec4565b808202600082127f80000000000000000000000000000000000000000000000000000000000000008414161561402557614025613ec4565b818105831482151761254257612542613ec4565b6001600160a01b038516815283602082015261ffff83166040820152608060608201526000613df860808301846137d9565b7fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b166004820152826018820152600082516140d98160388501602087016137b5565b9190910160380195945050505050565b86815260ff8616602082015263ffffffff851660408201526001600160a01b038416606082015282608082015260c060a0820152600061412c60c08301846137d9565b98975050505050505050565b67ffffffffffffffff81811683821601908082111561337657613376613ec4565b6001600160a01b03815116825263ffffffff60208201511660208301526040810151604083015267ffffffffffffffff60608201511660608301526000608082015160c060808501526141af60c08501826137d9565b905060a083015184820360a0860152612dfb82826137d9565b6040815260006141db6040830185614159565b905082151560208301529392505050565b6040805190810167ffffffffffffffff8111828210171561420f5761420f613e49565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561423e5761423e613e49565b604052919050565b60006040828403121561425857600080fd5b6142606141ec565b9050815181526020820151602082015292915050565b60006040828403121561428857600080fd5b6125cb8383614246565b60c081016001600160a01b03806142a88561390f565b168352806142b86020860161390f565b166020840152806142cb6040860161390f565b166040840152806142de6060860161390f565b166060840152806142f16080860161390f565b1660808401528061430460a0860161390f565b1660a08401525092915050565b63ffffffff848116825260406020808401829052838201859052600092869160608601855b8881101561437657836143488661365f565b1682528285013561435881613926565b67ffffffffffffffff16828401529385019390850190600101614336565b509998505050505050505050565b7fffffffff000000000000000000000000000000000000000000000000000000008660e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660048201528360188201528183603883013760009101603801908152949350505050565b6001600160a01b038616815284602082015261ffff8416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006040828403121561445957600080fd5b6144616141ec565b82358152602083013560208201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c8201526000825161451681602c8501602087016137b5565b91909101602c0195945050505050565b6080815260006145396080830186614159565b9050614552602083018580518252602090810151910152565b6001600160a01b0383166060830152949350505050565b60006080828403121561457b57600080fd5b6040516060810181811067ffffffffffffffff8211171561459e5761459e613e49565b80604052508091508251815260208301516145b881613926565b60208201526145ca8460408501614246565b60408201525092915050565b6000608082840312156145e857600080fd5b6125cb8383614569565b60008060a0838503121561460557600080fd5b61460f8484614569565b9150608083015167ffffffffffffffff8082111561462c57600080fd5b908401906040828703121561464057600080fd5b6146486141ec565b825168ffffffffffffffffff8116811461466157600080fd5b81526020838101518381111561467657600080fd5b80850194505087601f85011261468b57600080fd5b83518381111561469d5761469d613e49565b6146af82601f19601f84011601614215565b935080845288828287010111156146c557600080fd5b6146d4818386018488016137b5565b5081019190915292959294509192505050565b600082516146f98184602087016137b5565b9190910192915050565b60006020828403121561471557600080fd5b81516125cb81613a3b56fea2646970667358221220b02d87d83803870a8f33ad13593665aeb00cc0ffd7c56d57bce21f4684c70b2e64736f6c63430008160033",
1509
+ "deployedBytecode": "0x6080604052600436106101e35760003560e01c80637260753711610102578063bedb86fb11610095578063cc32d17611610064578063cc32d17614610712578063d621ad3f1461074c578063f2fde38b14610784578063fc0c546a146107a457600080fd5b8063bedb86fb1461068f578063c7c7f5b3146106af578063c859c483146106d0578063cbef2aa9146106f057600080fd5b80639f68b964116100d15780639f68b9641461061e578063a7229fd91461063a578063a88835d71461065a578063b0d7ca5d1461067a57600080fd5b80637260753714610563578063857749b0146105ac5780638da5cb5b146105e05780639561b12f146105fe57600080fd5b806338da6b8e1161017a578063461bb0b911610149578063461bb0b9146104c55780635114bf09146104e55780635e280f1114610502578063715018a61461054e57600080fd5b806338da6b8e146104085780633b6f743b146104585780633faa12c514610485578063434def55146104a557600080fd5b8063200d2ed2116101b6578063200d2ed2146102aa578063203bd15f146102dd5780632bc5114c146102ff578063341a4648146103f557600080fd5b80630141e41b146101e85780630d35b4151461021e578063156a0d0f1461024d57806316909bca1461028e575b600080fd5b3480156101f457600080fd5b50610208610203366004613678565b6107d8565b6040516102159190613755565b60405180910390f35b34801561022a57600080fd5b5061023e610239366004613780565b610a5d565b60405161021593929190613805565b34801561025957600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526000602082015201610215565b34801561029a57600080fd5b50600160405161021591906138bc565b3480156102b657600080fd5b506001546102cb90600160a01b900460ff1681565b60405160ff9091168152602001610215565b3480156102e957600080fd5b506102fd6102f8366004613985565b610f59565b005b34801561030b57600080fd5b506103946040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526001546001600160a01b03908116825260045481166020830152600654811692820192909252600554821660608201526002548216608082015260035490911660a082015290565b6040516102159190600060c0820190506001600160a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b6102fd610403366004613a07565b611257565b34801561041457600080fd5b5061043f610423366004613a20565b60076020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610215565b34801561046457600080fd5b50610478610473366004613a49565b611331565b6040516102159190613a9b565b34801561049157600080fd5b506102fd6104a0366004613ab2565b6115de565b3480156104b157600080fd5b506102fd6104c0366004613aef565b6116b2565b3480156104d157600080fd5b506102fd6104e0366004613b52565b61191f565b3480156104f157600080fd5b50475b604051908152602001610215565b34801561050e57600080fd5b506105367f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610215565b34801561055a57600080fd5b506102fd611acd565b34801561056f57600080fd5b506105977f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610215565b3480156105b857600080fd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ec57600080fd5b506000546001600160a01b0316610536565b34801561060a57600080fd5b506102fd610619366004613b64565b611ae1565b34801561062a57600080fd5b5060405160018152602001610215565b34801561064657600080fd5b506104f4610655366004613bd7565b611c46565b34801561066657600080fd5b506102fd610675366004613c13565b611d44565b34801561068657600080fd5b506102fd611f6f565b34801561069b57600080fd5b506102fd6106aa366004613c9c565b611fd8565b6106c26106bd366004613cb9565b612093565b604051610215929190613d57565b3480156106dc57600080fd5b506102fd6106eb366004613d7b565b6120c7565b6107036106fe366004613cb9565b6121c2565b60405161021593929190613da7565b34801561071e57600080fd5b5060015461043f907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b34801561075857600080fd5b506104f4610767366004613e02565b600860209081526000928352604080842090915290825290205481565b34801561079057600080fd5b506102fd61079f366004613e2e565b6123a7565b3480156107b057600080fd5b506105367f000000000000000000000000000000000000000000000000000000000000000081565b60018054606091600160a01b90910460ff161461085057600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556002546001600160a01b03163381146108a057604051635bd25eff60e01b815260040160405180910390fd5b60008367ffffffffffffffff8111156108bb576108bb613e49565b60405190808252806020026020018201604052801561090057816020015b60408051808201909152600080825260208201528152602001906001900390816108d95790505b5090506000805b85811015610a02573687878381811061092257610922613e78565b9050606002019050600061098c8260200160208101906109429190613ea7565b6109526060850160408601613ea7565b600760006109636020880188613a20565b63ffffffff1663ffffffff1681526020019081526020016000206124539092919063ffffffff16565b905067ffffffffffffffff8116156109f85760408051808201909152806109b66020850185613a20565b63ffffffff16815267ffffffffffffffff831660209091015285856109da81613ef3565b9650815181106109ec576109ec613e78565b60200260200101819052505b5050600101610907565b508082527fce105e156370093e6600169f7c01277f740d45fbcf95435227ce6f43ad0c3abd8783604051610a37929190613f2b565b60405180910390a1509150506001805460ff60a01b1916600160a01b1790559392505050565b60408051808201909152600080825260208201526060610a90604051806040016040528060008152602001600081525090565b60408051808201909152807f00000000000000000000000000000000000000000000000000000000000000008152602001610b2b60076000886000016020810190610adb9190613a20565b63ffffffff16815260208101919091526040016000205467ffffffffffffffff1667ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81525092506000610b588460200151866040013511610b4e578560400135612508565b8460200151612508565b90506000610b88610b6c6020880188613a20565b83610b83610b7d60c08b018b613f4a565b15919050565b612548565b600154604080517f81993cd000000000000000000000000000000000000000000000000000000000815283516001600160a01b039081166004830152602085015163ffffffff1660248301529184015167ffffffffffffffff9081166044830152606085015116606482015260808401511515608482015260a0840151151560a48201529293506000929116906381993cd09060c401602060405180830381865afa158015610c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5f9190613faf565b90508267ffffffffffffffff168167ffffffffffffffff1614610edc5760408051600180825281830190925290816020015b604080518082019091526000815260606020820152815260200190600190039081610c915790505094508267ffffffffffffffff168167ffffffffffffffff161015610db3576040518060400160405280610d28610d238487610cf49190613fcc565b67ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b6125d2565b610d52907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613fed565b81526020016040518060400160405280600c81526020017f70726f746f636f6c20666565000000000000000000000000000000000000000081525081525085600081518110610da357610da3613e78565b6020026020010181905250610edc565b8267ffffffffffffffff168167ffffffffffffffff161115610edc576000610ddb8483613fcc565b9091039050600067ffffffffffffffff84811690831603610e3c576040805160008082526020820190925290610e34565b604080518082019091526000815260606020820152815260200190600190039081610e0c5790505b509550610eda565b6040518060400160405280610e7d610d238467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020016040518060400160405280600681526020017f726577617264000000000000000000000000000000000000000000000000000081525081525086600081518110610ece57610ece613e78565b60200260200101819052505b505b6040518060400160405280610f1a8567ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416029052959794965050505050565b60018054600160a01b900460ff1614610f9b57600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556005546001600160a01b0316338114610feb57604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff84167f00000000000000000000000000000000000000000000000000000000000000000282158015906060906110845761108161103760608c0160408d01613ea7565b61104460208d018d613a20565b8589898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061268892505050565b90505b600061109089856126ba565b9050801561119957821561113d576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061110a908c908e906000908890600401614039565b600060405180830381600087803b15801561112457600080fd5b505af1158015611138573d6000803e3d6000fd5b505050505b6001600160a01b0389168a7fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61117660208f018f613a20565b6040805163ffffffff9092168252602082018990520160405180910390a3611237565b6111a660208c018c613a20565b8985846040516020016111bc949392919061406b565b60408051601f19818403018152918152815160209283012060008d8152600884528281208180528452918220557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b55918c9190611219908f018f613a20565b8c888760405161122e969594939291906140e9565b60405180910390a15b50506001805460ff60a01b1916600160a01b179055505050505050505050565b6006546001600160a01b031633811461128357604051635bd25eff60e01b815260040160405180910390fd5b61128c82612761565b60006112983384612799565b905080600160158282829054906101000a900467ffffffffffffffff166112bf9190614138565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa064a2faa279f4d67c85c8fc69d4ebb7de2739a9e6dd864dfdd1b9e066d4bfd081604051611324919067ffffffffffffffff91909116815260200190565b60405180910390a1505050565b604080518082019091526000808252602082015260006113548460400135612508565b90508067ffffffffffffffff1660000361139a576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113ac610b7d60c0870187613f4a565b9050801561151a576005546040805160c081019091523381526001600160a01b0390911690633292cf02906020808201906113e9908a018a613a20565b63ffffffff1681526020898101359082015267ffffffffffffffff8616604082015260600161141b60a08a018a613f4a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161146260808a018a613f4a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526114d3919088906004016141c8565b6040805180830381865afa1580156114ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115139190614276565b92506115d6565b60008061152a6080880188613f4a565b60055492109250506001600160a01b03166375d2208c61154d6020890189613a20565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015283151560248201526044016040805180830381865afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d29190614276565b9350505b505092915050565b6115e661287f565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168263ffffffff160361164b576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff808316600090815260076020526040902061166d9183906128f316565b6040805163ffffffff8416815282151560208201527faf6b8dd4c5a827e03f548d06181b36aaba61e22436ff1cfa9bc409d576366a6091015b60405180910390a15050565b60018054600160a01b900460ff16146116f457600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556005546001600160a01b031633811461174457604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff82167f000000000000000000000000000000000000000000000000000000000000000002600061177d85836126ba565b905080156117e1576001600160a01b038516877fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6117be60208c018c613a20565b6040805163ffffffff9092168252602082018790520160405180910390a3611902565b6117ee6020890189613a20565b60405160e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166020820152606086901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660248201526038810183905260580160408051601f19818403018152918152815160209283012060008a81526008845282812060ff8b168252845291909120557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b5590889088906118b6908c018c613a20565b6040805193845260ff909216602084015263ffffffff16908201526001600160a01b03871660608201526080810184905260c060a0820181905260009082015260e00160405180910390a15b50506001805460ff60a01b1916600160a01b179055505050505050565b61192761287f565b6119346020820182613e2e565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119716040820160208301613e2e565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119ae6060820160408301613e2e565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556119eb6080820160608301613e2e565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611a2860a0820160808301613e2e565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611a6560c0820160a08301613e2e565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040517f9774229668135b546675daf425e41c0848f60aa32d0951881245f4f528cc33f090611ac2908390614292565b60405180910390a150565b611ad561287f565b611adf60006129bd565b565b60018054600160a01b900460ff1614611b2357600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556002546001600160a01b0316338114611b7357604051635bd25eff60e01b815260040160405180910390fd5b60005b82811015611bf15736848483818110611b9157611b91613e78565b9050604002019050611be8816020016020810190611baf9190613ea7565b60076000611bc06020860186613a20565b63ffffffff1663ffffffff168152602001908152602001600020612a1a90919063ffffffff16565b50600101611b76565b507f10c5f2b007767d266c6c75c86ae9ed0c74e6320b30bda231af7396a990e7263c848484604051611c2593929190614311565b60405180910390a150506001805460ff60a01b1916600160a01b1790555050565b60018054600091600160a01b90910460ff1614611c8c57600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556006546001600160a01b0316338114611cdc57604051635bd25eff60e01b815260040160405180910390fd5b6001600160a01b038516611d1c576040517f809fc44b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d298585856000612ab4565b50506001805460ff60a01b1916600160a01b17905592915050565b60018054600160a01b900460ff1614611d8657600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b191674020000000000000000000000000000000000000000179055604051611dc39086908690869086908690602001614384565b60408051601f19818403018152918152815160209283012060008a81526008845282812060ff8b16825290935291205414611e2a576040517faba8b6ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600087815260086020908152604080832060ff8a168452909152812055611e518484612afc565b611e60611e5d84612508565b50565b8015611f07576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611ed49087908b90600090889088906004016143f6565b600060405180830381600087803b158015611eee57600080fd5b505af1158015611f02573d6000803e3d6000fd5b505050505b6040805163ffffffff87168152602081018590526001600160a01b0386169189917fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c910160405180910390a350506001805460ff60a01b1916600160a01b1790555050505050565b6004546001600160a01b0316338114611f9b57604051635bd25eff60e01b815260040160405180910390fd5b47611fa833826000612b41565b6040518181527f19e23b96a5e0d494b59baca97d1fe386cf8e80a978dfd8845d25f1a9d5c7e183906020016116a6565b6004546001600160a01b031633811461200457604051635bd25eff60e01b815260040160405180910390fd5b600154600119600160a01b90910460ff1601612033576040516376a9ad7360e01b815260040160405180910390fd5b8161203f576001612042565b60035b6001805460ff92909216600160a01b0260ff60a01b1990921691909117905560405182151581527f878ac8a2ca79520471f8f3c8494fa802c03ce3bf034252aad7f22318984fdbdb906020016116a6565b61209b613617565b60408051808201909152600080825260208201526120ba8585856121c2565b5090969095509350505050565b6006546001600160a01b03163381146120f357604051635bd25eff60e01b815260040160405180910390fd5b81600160158282829054906101000a900467ffffffffffffffff166121189190613fcc565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061217a836121758467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b612afc565b604080516001600160a01b038516815267ffffffffffffffff841660208201527fa46907b6b80b882da80d6e36cc905dde57fafff0a5442c8898526fe952d1e6539101611324565b6121ca613617565b604080518082019091526000808252602082015260408051808201909152600081526060602082015260018054600160a01b900460ff161461223557600154600119600160a01b90910460ff160161081e576040516376a9ad7360e01b815260040160405180910390fd5b6001805460ff60a01b1916740200000000000000000000000000000000000000001790556000808061226689612b82565b92509250925060405180604001604052806122aa8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416029052945060006122fb6122f4368b90038b018b614447565b8751612c20565b905083156123165761230f8a82848b612c75565b9650612328565b6123228a82848b612e04565b90975094505b865133907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a61235a60208e018e613a20565b89516020808c01516040805163ffffffff90951685529184019290925282015260600160405180910390a350506001805460ff60a01b1916600160a01b1790555092969195509350915050565b6123af61287f565b6001600160a01b03811661244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b611e5d816129bd565b825460009067ffffffffffffffff1667fffffffffffffffe1981016124a4576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168367ffffffffffffffff1610156125005782810367ffffffffffffffff808216908616116124dd57846124df565b805b865467ffffffffffffffff191681840367ffffffffffffffff161787559250505b509392505050565b60006125427f0000000000000000000000000000000000000000000000000000000000000000838161253c5761253c614479565b04613000565b92915050565b6040805160c08082018352600080835260208084018290528385018290526060808501839052608080860184905260a09586018490528651948501875233855263ffffffff8a1685840181905267ffffffffffffffff8a8116878a0152928601859052845260079092529490912054841690931492810192909252821515908201525b9392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401612441565b5090565b6060848484846040516020016126a194939291906144a8565b6040516020818303038152906040529050949350505050565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390526000917f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b15801561274257600080fd5b505af1925050508015612753575060015b156125425750600192915050565b3415611e5d576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006127a482612508565b90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166379cc6790847f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8516026040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561286157600080fd5b505af1158015612875573d6000803e3d6000fd5b5050505092915050565b6000546001600160a01b03163314611adf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612441565b815467ffffffffffffffff1681156129655767ffffffffffffffff811615612947576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff178355505050565b67ffffffffffffffff818116146129a8576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191683555b505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b815467ffffffffffffffff1667fffffffffffffffe198101612a3b57505050565b612a458282614138565b905067fffffffffffffffe1967ffffffffffffffff821601612a93576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff919091161790915550565b612ac08484848461309a565b612af6576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000612b0883836126ba565b9050806129b8576040517f06a6167e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b4c8383836130cf565b6129b8576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080612b96610b7d60c0860186613f4a565b9250612ba6338560400135612799565b91506000612bc1612bba6020870187613a20565b8486612548565b9050612bd981612bd48760600135612508565b613188565b9150612c188260076000612bf060208a018a613a20565b63ffffffff1663ffffffff16815260200190815260200160002061337d90919063ffffffff16565b509193909250565b604080518082019091526000808252602082015282513414612c6e576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090919050565b612c7d613617565b602084015115612c9457612c94846020015161340b565b60055484516040805160c081019091523381526001600160a01b039092169163ff6fb3009190602080820190612ccc908b018b613a20565b63ffffffff16815260208a8101359082015267ffffffffffffffff88166040820152606001612cfe60a08b018b613f4a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001612d4560808b018b613f4a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152612db8919089908890600401614526565b60806040518083038185885af1158015612dd6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dfb91906145d6565b95945050505050565b612e0c613617565b604080518082019091526000815260606020820152602085015115612e5d576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546040805160a081019091523381526001600160a01b03909116906385afd45390602080820190612e92908b018b613a20565b63ffffffff16815260208a8101359082015267ffffffffffffffff881660408201526060016000612ec660808c018c613f4a565b9190911190915250604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815282516001600160a01b03166004820152602083015163ffffffff166024820152908201516044820152606082015167ffffffffffffffff1660648201526080909101511515608482015260a4016000604051808303816000875af1158015612f67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f8f91908101906145f2565b604082015151875192945090925090808214612ff55781811115612fc357818103612fbc868260006130cf565b5050612ff5565b6040517fa028531600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505094509492505050565b600067ffffffffffffffff821115612684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f34206269747300000000000000000000000000000000000000000000000000006064820152608401612441565b60006001600160a01b0385166130bc576130b58484846130cf565b90506130c7565b612dfb85858561347e565b949350505050565b60008161312a576040516001600160a01b038516908490600081818185875af1925050503d806000811461311f576040519150601f19603f3d011682016040523d82523d6000602084013e613124565b606091505b5061317f565b6040516001600160a01b038516906108fc9085906000818181858888f193505050503d8060008114613178576040519150601f19603f3d011682016040523d82523d6000602084013e61317d565b606091505b505b50949350505050565b600154604080517f43d9564d00000000000000000000000000000000000000000000000000000000815284516001600160a01b039081166004830152602086015163ffffffff1660248301529185015167ffffffffffffffff9081166044830152606086015116606482015260808501511515608482015260a0850151151560a482015260009291909116906343d9564d9060c4016020604051808303816000875af115801561323c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132609190613faf565b604084015190915067ffffffffffffffff80821690831610156132e7576132878282613fcc565b600180546015906132bc9084907501000000000000000000000000000000000000000000900467ffffffffffffffff16614138565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550613315565b8067ffffffffffffffff168267ffffffffffffffff16111561331557600061330f8284613fcc565b90920391505b8267ffffffffffffffff168267ffffffffffffffff16108061333f575067ffffffffffffffff8216155b15613376576040517fa1e8654500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b815467ffffffffffffffff1667fffffffffffffffe19810161339e57505050565b8167ffffffffffffffff168167ffffffffffffffff1610156133ec576040517f2b4d0ad500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191691900367ffffffffffffffff16179055565b6003546001600160a01b03168061344e576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61347a81337f00000000000000000000000000000000000000000000000000000000000000008561352a565b5050565b6040516001600160a01b0383166024820152604481018290526000906130c79085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613536565b612ac0848484846135c3565b6000806000846001600160a01b03168460405161355391906146e7565b6000604051808303816000865af19150503d8060008114613590576040519150601f19603f3d011682016040523d82523d6000602084013e613595565b606091505b5091509150816135a6576000612dfb565b80511580612dfb575080806020019051810190612dfb9190614703565b6040516001600160a01b0380851660248301528316604482015260648101829052600090612dfb9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084016134c6565b604051806060016040528060008019168152602001600067ffffffffffffffff16815260200161365a604051806040016040528060008152602001600081525090565b905290565b803563ffffffff8116811461367357600080fd5b919050565b60008060006040848603121561368d57600080fd5b6136968461365f565b9250602084013567ffffffffffffffff808211156136b357600080fd5b818601915086601f8301126136c757600080fd5b8135818111156136d657600080fd5b8760206060830285010111156136eb57600080fd5b6020830194508093505050509250925092565b60008151808452602080850194506020840160005b8381101561374a578151805163ffffffff16885283015167ffffffffffffffff168388015260409096019590820190600101613713565b509495945050505050565b6020815260006125cb60208301846136fe565b600060e0828403121561377a57600080fd5b50919050565b60006020828403121561379257600080fd5b813567ffffffffffffffff8111156137a957600080fd5b6130c784828501613768565b60005b838110156137d05781810151838201526020016137b8565b50506000910152565b600081518084526137f18160208601602086016137b5565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b8381101561389e578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4001855281518051885283015183880187905261388b878901826137d9565b9750509382019390820190600101613841565b505087516060880152505050602085015160808501525090506130c7565b60208101600283106138f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006060828403121561377a57600080fd5b80356001600160a01b038116811461367357600080fd5b67ffffffffffffffff81168114611e5d57600080fd5b60008083601f84011261394e57600080fd5b50813567ffffffffffffffff81111561396657600080fd5b60208301915083602082850101111561397e57600080fd5b9250929050565b60008060008060008060e0878903121561399e57600080fd5b6139a888886138fd565b9550606087013594506139bd6080880161390f565b935060a08701356139cd81613926565b925060c087013567ffffffffffffffff8111156139e957600080fd5b6139f589828a0161393c565b979a9699509497509295939492505050565b600060208284031215613a1957600080fd5b5035919050565b600060208284031215613a3257600080fd5b6125cb8261365f565b8015158114611e5d57600080fd5b60008060408385031215613a5c57600080fd5b823567ffffffffffffffff811115613a7357600080fd5b613a7f85828601613768565b9250506020830135613a9081613a3b565b809150509250929050565b815181526020808301519082015260408101612542565b60008060408385031215613ac557600080fd5b613ace8361365f565b91506020830135613a9081613a3b565b803560ff8116811461367357600080fd5b600080600080600060e08688031215613b0757600080fd5b613b1187876138fd565b945060608601359350613b2660808701613ade565b9250613b3460a0870161390f565b915060c0860135613b4481613926565b809150509295509295909350565b600060c0828403121561377a57600080fd5b600080600060408486031215613b7957600080fd5b613b828461365f565b9250602084013567ffffffffffffffff80821115613b9f57600080fd5b818601915086601f830112613bb357600080fd5b813581811115613bc257600080fd5b8760208260061b85010111156136eb57600080fd5b600080600060608486031215613bec57600080fd5b613bf58461390f565b9250613c036020850161390f565b9150604084013590509250925092565b600080600080600080600060c0888a031215613c2e57600080fd5b87359650613c3e60208901613ade565b9550613c4c6040890161365f565b9450613c5a6060890161390f565b93506080880135925060a088013567ffffffffffffffff811115613c7d57600080fd5b613c898a828b0161393c565b989b979a50959850939692959293505050565b600060208284031215613cae57600080fd5b81356125cb81613a3b565b60008060008385036080811215613ccf57600080fd5b843567ffffffffffffffff811115613ce657600080fd5b613cf287828801613768565b9450506040601f1982011215613d0757600080fd5b50602084019150613d1a6060850161390f565b90509250925092565b8051825267ffffffffffffffff602082015116602083015260408101516129b8604084018280518252602090810151910152565b60c08101613d658285613d23565b82516080830152602083015160a08301526125cb565b60008060408385031215613d8e57600080fd5b613d978361390f565b91506020830135613a9081613926565b613db18185613d23565b82516080820152602083015160a082015260e060c082015268ffffffffffffffffff82511660e0820152600060208301516040610100840152613df86101208401826137d9565b9695505050505050565b60008060408385031215613e1557600080fd5b82359150613e2560208401613ade565b90509250929050565b600060208284031215613e4057600080fd5b6125cb8261390f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613eb957600080fd5b81356125cb81613926565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f2457613f24613ec4565b5060010190565b63ffffffff831681526040602082015260006130c760408301846136fe565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f7f57600080fd5b83018035915067ffffffffffffffff821115613f9a57600080fd5b60200191503681900382131561397e57600080fd5b600060208284031215613fc157600080fd5b81516125cb81613926565b67ffffffffffffffff82811682821603908082111561337657613376613ec4565b808202600082127f80000000000000000000000000000000000000000000000000000000000000008414161561402557614025613ec4565b818105831482151761254257612542613ec4565b6001600160a01b038516815283602082015261ffff83166040820152608060608201526000613df860808301846137d9565b7fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b166004820152826018820152600082516140d98160388501602087016137b5565b9190910160380195945050505050565b86815260ff8616602082015263ffffffff851660408201526001600160a01b038416606082015282608082015260c060a0820152600061412c60c08301846137d9565b98975050505050505050565b67ffffffffffffffff81811683821601908082111561337657613376613ec4565b6001600160a01b03815116825263ffffffff60208201511660208301526040810151604083015267ffffffffffffffff60608201511660608301526000608082015160c060808501526141af60c08501826137d9565b905060a083015184820360a0860152612dfb82826137d9565b6040815260006141db6040830185614159565b905082151560208301529392505050565b6040805190810167ffffffffffffffff8111828210171561420f5761420f613e49565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561423e5761423e613e49565b604052919050565b60006040828403121561425857600080fd5b6142606141ec565b9050815181526020820151602082015292915050565b60006040828403121561428857600080fd5b6125cb8383614246565b60c081016001600160a01b03806142a88561390f565b168352806142b86020860161390f565b166020840152806142cb6040860161390f565b166040840152806142de6060860161390f565b166060840152806142f16080860161390f565b1660808401528061430460a0860161390f565b1660a08401525092915050565b63ffffffff848116825260406020808401829052838201859052600092869160608601855b8881101561437657836143488661365f565b1682528285013561435881613926565b67ffffffffffffffff16828401529385019390850190600101614336565b509998505050505050505050565b7fffffffff000000000000000000000000000000000000000000000000000000008660e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660048201528360188201528183603883013760009101603801908152949350505050565b6001600160a01b038616815284602082015261ffff8416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006040828403121561445957600080fd5b6144616141ec565b82358152602083013560208201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c8201526000825161451681602c8501602087016137b5565b91909101602c0195945050505050565b6080815260006145396080830186614159565b9050614552602083018580518252602090810151910152565b6001600160a01b0383166060830152949350505050565b60006080828403121561457b57600080fd5b6040516060810181811067ffffffffffffffff8211171561459e5761459e613e49565b80604052508091508251815260208301516145b881613926565b60208201526145ca8460408501614246565b60408201525092915050565b6000608082840312156145e857600080fd5b6125cb8383614569565b60008060a0838503121561460557600080fd5b61460f8484614569565b9150608083015167ffffffffffffffff8082111561462c57600080fd5b908401906040828703121561464057600080fd5b6146486141ec565b825168ffffffffffffffffff8116811461466157600080fd5b81526020838101518381111561467657600080fd5b80850194505087601f85011261468b57600080fd5b83518381111561469d5761469d613e49565b6146af82601f19601f84011601614215565b935080845288828287010111156146c557600080fd5b6146d4818386018488016137b5565b5081019190915292959294509192505050565b600082516146f98184602087016137b5565b9190910192915050565b60006020828403121561471557600080fd5b81516125cb81613a3b56fea2646970667358221220b02d87d83803870a8f33ad13593665aeb00cc0ffd7c56d57bce21f4684c70b2e64736f6c63430008160033",
1515
1510
  "linkReferences": {},
1516
1511
  "deployedLinkReferences": {}
1517
1512
  }