@superfluid-finance/ethereum-contracts 1.2.3-dev.d435096.0 → 1.2.3-dev.f8cb3ec.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 (117) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -2
  3. package/build/contracts/AccessControl.json +1 -1
  4. package/build/contracts/AccessControlEnumerable.json +1 -1
  5. package/build/contracts/Address.json +1 -1
  6. package/build/contracts/AgreementBase.json +9 -9
  7. package/build/contracts/AgreementLibrary.json +4 -4
  8. package/build/contracts/BaseRelayRecipient.json +1 -1
  9. package/build/contracts/BatchLiquidator.json +165 -165
  10. package/build/contracts/BatchOperation.json +1 -1
  11. package/build/contracts/CFAv1Library.json +4 -4
  12. package/build/contracts/CallUtils.json +1 -1
  13. package/build/contracts/ClosingOnUpdateFlowTestApp.json +4 -4
  14. package/build/contracts/ConstantFlowAgreementV1.json +5 -5
  15. package/build/contracts/Context.json +1 -1
  16. package/build/contracts/ContextDefinitions.json +1 -1
  17. package/build/contracts/Create2.json +1 -1
  18. package/build/contracts/CustomSuperTokenBase.json +2 -2
  19. package/build/contracts/ERC165.json +1 -1
  20. package/build/contracts/ERC1820Implementer.json +1 -1
  21. package/build/contracts/ERC1820RegistryCompiled.json +1 -1
  22. package/build/contracts/ERC20.json +1 -1
  23. package/build/contracts/ERC20Burnable.json +1 -1
  24. package/build/contracts/ERC20Pausable.json +1 -1
  25. package/build/contracts/ERC20PresetMinterPauser.json +1 -1
  26. package/build/contracts/ERC20WithTokenInfo.json +1 -1
  27. package/build/contracts/ERC777Helper.json +1 -1
  28. package/build/contracts/ERC777RecipientDrainingGas.json +4 -4
  29. package/build/contracts/ERC777RecipientReverting.json +4 -4
  30. package/build/contracts/EnumerableSet.json +1 -1
  31. package/build/contracts/ExclusiveInflowTestApp.json +4 -4
  32. package/build/contracts/FixedSizeData.json +1 -1
  33. package/build/contracts/FlowExchangeTestApp.json +4 -4
  34. package/build/contracts/FlowOperatorDefinitions.json +1 -1
  35. package/build/contracts/FullUpgradableSuperTokenProxy.json +4 -4
  36. package/build/contracts/IAccessControl.json +1 -1
  37. package/build/contracts/IAccessControlEnumerable.json +1 -1
  38. package/build/contracts/IConstantFlowAgreementV1.json +1 -1
  39. package/build/contracts/IDAv1Library.json +4 -4
  40. package/build/contracts/IERC165.json +1 -1
  41. package/build/contracts/IERC1820Implementer.json +1 -1
  42. package/build/contracts/IERC1820Registry.json +1 -1
  43. package/build/contracts/IERC20.json +1 -1
  44. package/build/contracts/IERC20Metadata.json +1 -1
  45. package/build/contracts/IERC777.json +1 -1
  46. package/build/contracts/IERC777Recipient.json +1 -1
  47. package/build/contracts/IERC777Sender.json +1 -1
  48. package/build/contracts/IInstantDistributionAgreementV1.json +1 -1
  49. package/build/contracts/IMaticBridgedNativeSuperToken.json +2 -2
  50. package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +2 -2
  51. package/build/contracts/IMultiSigWallet.json +1 -1
  52. package/build/contracts/IPureSuperToken.json +2 -2
  53. package/build/contracts/IPureSuperTokenCustom.json +2 -2
  54. package/build/contracts/IRelayRecipient.json +1 -1
  55. package/build/contracts/IResolver.json +1 -1
  56. package/build/contracts/ISETH.json +2 -2
  57. package/build/contracts/ISETHCustom.json +2 -2
  58. package/build/contracts/ISuperAgreement.json +1 -1
  59. package/build/contracts/ISuperApp.json +2 -2
  60. package/build/contracts/ISuperToken.json +2 -2
  61. package/build/contracts/ISuperTokenFactory.json +2 -2
  62. package/build/contracts/ISuperfluid.json +425 -418
  63. package/build/contracts/ISuperfluidGovernance.json +2 -2
  64. package/build/contracts/ISuperfluidToken.json +1 -1
  65. package/build/contracts/ITOGAv1.json +1208 -1208
  66. package/build/contracts/ITOGAv2.json +1208 -1208
  67. package/build/contracts/Initializable.json +1 -1
  68. package/build/contracts/InstantDistributionAgreementV1.json +5 -5
  69. package/build/contracts/Int96SafeMath.json +1 -1
  70. package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +191 -191
  71. package/build/contracts/NonClosableOutflowTestApp.json +4 -4
  72. package/build/contracts/Ownable.json +1 -1
  73. package/build/contracts/Pausable.json +1 -1
  74. package/build/contracts/Proxy.json +1 -1
  75. package/build/contracts/PureSuperToken.json +88 -88
  76. package/build/contracts/Resolver.json +90 -90
  77. package/build/contracts/SETHProxy.json +196 -196
  78. package/build/contracts/SafeCast.json +1 -1
  79. package/build/contracts/SafeERC20.json +1 -1
  80. package/build/contracts/SafeMath.json +1 -1
  81. package/build/contracts/SelfDeletingFlowTestApp.json +4 -4
  82. package/build/contracts/SlotsBitmapLibrary.json +1 -1
  83. package/build/contracts/Strings.json +1 -1
  84. package/build/contracts/SuperAppBase.json +2 -2
  85. package/build/contracts/SuperAppDefinitions.json +1 -1
  86. package/build/contracts/SuperToken.json +46 -46
  87. package/build/contracts/SuperTokenFactory.json +35 -35
  88. package/build/contracts/SuperTokenFactoryBase.json +33 -33
  89. package/build/contracts/SuperTokenFactoryHelper.json +35 -35
  90. package/build/contracts/SuperUpgrader.json +422 -422
  91. package/build/contracts/Superfluid.json +5488 -5454
  92. package/build/contracts/SuperfluidFrameworkDeployer.json +472 -472
  93. package/build/contracts/SuperfluidGovernanceBase.json +9 -9
  94. package/build/contracts/SuperfluidGovernanceConfigs.json +1 -1
  95. package/build/contracts/SuperfluidGovernanceII.json +17 -17
  96. package/build/contracts/SuperfluidGovernanceIIProxy.json +17 -17
  97. package/build/contracts/SuperfluidLoader.json +144 -144
  98. package/build/contracts/SuperfluidToken.json +1217 -1217
  99. package/build/contracts/TOGA.json +1218 -1218
  100. package/build/contracts/TestGovernance.json +171 -171
  101. package/build/contracts/TestToken.json +94 -94
  102. package/build/contracts/TokenCustodian.json +214 -214
  103. package/build/contracts/TokenInfo.json +1 -1
  104. package/build/contracts/UInt128SafeMath.json +1 -1
  105. package/build/contracts/UUPSProxiable.json +132 -132
  106. package/build/contracts/UUPSProxy.json +81 -81
  107. package/build/contracts/UUPSUtils.json +37 -37
  108. package/build/contracts-sizes.txt +7 -7
  109. package/contracts/interfaces/superfluid/ISuperfluid.sol +14 -6
  110. package/contracts/superfluid/Superfluid.sol +12 -10
  111. package/package.json +2 -2
  112. package/scripts/{deploy-unlisted-native-super-token.js → deploy-unlisted-pure-super-token.js} +4 -4
  113. package/scripts/gov-transfer-framework-ownership.js +3 -3
  114. package/scripts/libs/getConfig.js +3 -3
  115. package/utils/README.md +19 -1
  116. package/utils/stream-closer.html +212 -0
  117. package/utils/supertoken-deployer.html +1 -1
@@ -898,9 +898,9 @@
898
898
  "type": "function"
899
899
  }
900
900
  ],
901
- "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uuid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"name\":\"CodeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"name\":\"FlowOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalSenderFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalReceiverFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"FlowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"FlowUpdatedExtension\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_MINIMUM_DEPOSIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DEPOSIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_FLOW_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"agreementType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"authorizeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountFlowInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCodeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"name\":\"getDepositRequiredForFlowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"getFlow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"flowId\",\"type\":\"bytes32\"}],\"name\":\"getFlowByID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"}],\"name\":\"getFlowOperatorData\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"}],\"name\":\"getFlowOperatorDataByID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"getMaximumFlowRateFromDeposit\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNetFlow\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isPatricianPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPatricianPeriodNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCurrentlyPatricianPeriod\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"dynamicBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"revokeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"updateCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowOperatorPermissions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Please read IConstantFlowAgreementV1 for implementation notes.For more technical notes, please visit protocol-monorepo wiki area.\",\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"authorizeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"IConstantFlowAgreementV1.authorizeFlowOperatorWithFullControl implementation\"},\"createFlow(address,address,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.createFlow implementation\"},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.createFlowByOperator implementation\"},\"deleteFlow(address,address,address,bytes)\":{\"details\":\"IConstantFlowAgreementV1.deleteFlow implementation\"},\"deleteFlowByOperator(address,address,address,bytes)\":{\"details\":\"IConstantFlowAgreementV1.deleteFlowByOperator implementation\"},\"getAccountFlowInfo(address,address)\":{\"details\":\"IConstantFlowAgreementV1.getAccountFlowInfo implementation\"},\"getCodeAddress()\":{\"details\":\"Get current implementation code address.\"},\"getDepositRequiredForFlowRate(address,int96)\":{\"details\":\"IConstantFlowAgreementV1.getDepositRequiredForFlowRate implementation\"},\"getFlow(address,address,address)\":{\"details\":\"IConstantFlowAgreementV1.getFlow implementation\"},\"getFlowByID(address,bytes32)\":{\"details\":\"IConstantFlowAgreementV1.getFlow implementation\"},\"getFlowOperatorData(address,address,address)\":{\"details\":\"IConstantFlowAgreementV1.getFlowOperatorData implementation\"},\"getFlowOperatorDataByID(address,bytes32)\":{\"details\":\"IConstantFlowAgreementV1.getFlowOperatorDataByID implementation\"},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"details\":\"IConstantFlowAgreementV1.getMaximumFlowRateFromDeposit implementation\"},\"getNetFlow(address,address)\":{\"details\":\"IConstantFlowAgreementV1.getNetFlow implementation\"},\"isPatricianPeriod(address,address,uint256)\":{\"details\":\"Returns whether it is the patrician period based on timestamp\",\"params\":{\"account\":\"The account we are interested in\",\"timestamp\":\"The timestamp we are interested in observing the result of isPatricianPeriod\"},\"returns\":{\"_0\":\"bool Whether it is currently the patrician period dictated by governance\"}},\"isPatricianPeriodNow(address,address)\":{\"details\":\"Returns whether it is the patrician period based on host.getNow()\",\"params\":{\"account\":\"The account we are interested in\"},\"returns\":{\"isCurrentlyPatricianPeriod\":\"Whether it is currently the patrician period dictated by governance\",\"timestamp\":\"The value of host.getNow()\"}},\"proxiableUUID()\":{\"details\":\"Proxiable UUID marker function, this would help to avoid wrong logic contract to be used for upgrading. NOTE: The semantics of the UUID deviates from the actual UUPS standard, where it is equivalent of _IMPLEMENTATION_SLOT.\"},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"ISuperAgreement.realtimeBalanceOf implementation\"},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"IConstantFlowAgreementV1.revokeFlowOperatorWithFullControl implementation\"},\"updateFlow(address,address,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.updateFlow implementation\"},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.updateFlowByOperator implementation\"},\"updateFlowOperatorPermissions(address,address,uint8,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.updateFlowOperatorPermissions implementation\"}},\"stateVariables\":{\"DEFAULT_MINIMUM_DEPOSIT\":{\"details\":\"Default minimum deposit value NOTE: - It may come as a surprise that it is not 0, this is the minimum friction we have in the system for the imperfect blockchain system we live in. - It is related to deposit clipping, and it is always rounded-up when clipping.\"},\"MAXIMUM_DEPOSIT\":{\"details\":\"Maximum deposit value\"},\"MAXIMUM_FLOW_RATE\":{\"details\":\"Maximum flow rate\"}},\"title\":\"ConstantFlowAgreementV1 contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/agreements/ConstantFlowAgreementV1.sol\":\"ConstantFlowAgreementV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x4823752b07b8ea4ca971b217e39457930e7cb103c2c91e2a29729e5ca907e4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f319af26a9ade3e6cf3698bf1b84aa6213bdd7a76606ea9ba56ced163593934\",\"dweb:/ipfs/QmZ2u9zen5Htan4dSP1RZCY2XqB9HUwqkNCMzdn7aV2jWc\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x5c6caab697d302ad7eb59c234a4d2dbc965c1bae87709bd2850060b7695b28c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb62abcee612c175f1b9bc70e5dfe5bd23473c99987ade6e80e291f68dc60ff1\",\"dweb:/ipfs/QmZCMajhG7FtRYNDwBchXN89mXR6HLPVzr9732qfUdNf9E\"]},\"project:/contracts/agreements/AgreementBase.sol\":{\"keccak256\":\"0xe59fc8bbe728c574773b5d3a3e9cfb4e8f323e9a3c3267a82d36fb79921b9997\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://0e21d969b3b996ab211eff83fa5bb7041614c0ac597c7479012c0fe625f4e15f\",\"dweb:/ipfs/QmWThBae9FCDgCAcco2bZicvsPq8vz5K1XW66hz3LXSK2V\"]},\"project:/contracts/agreements/AgreementLibrary.sol\":{\"keccak256\":\"0x107ee59e59b54e9ee85997d135a9bfc97979eda1143c7b1b61b63959777bff91\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://1a235f5a0fc7a04143662a69279d513d2434eeb7d60afdcc57911dcfeef712e5\",\"dweb:/ipfs/QmbUDhcf9mizwLxyCttibMxEM9NUun4guT3Sc9vdEaSxAv\"]},\"project:/contracts/agreements/ConstantFlowAgreementV1.sol\":{\"keccak256\":\"0x70d3c2a51b84ec2830d8d18831f8a76685fafb21d86885da5b65104dadcb92a1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e2890de952db5d7a1b1960fe4fb8fd278c1b27f9cfe8e137d20acd16ab8b4d08\",\"dweb:/ipfs/QmTR96GTDuNQfkUvfzYCq3Tn94QQxDtmUWSj3JYmrvPnrG\"]},\"project:/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb96bb6cb0fe88ddf5b890b6826f7f7585cf6e94223c76d8e2fb269779afe4445\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://b864597ae952222f0f43c66943492966013021c4171d5ef4f7357c047dfd737c\",\"dweb:/ipfs/Qmcr7xicfmPDD343B34ETP3XrdU9Vi1z3zxJSgqLipfQmY\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x57f4203168992c940eb6b8c7cc75f854cb36a1f9323b3f39ddc5e4fbe819c043\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://888941dfa3e5004f678f215b98a85d1bf54e412317928a78e0a1cff090773d4c\",\"dweb:/ipfs/QmVe838upcAyqpy1d3oQNHJrbRyWCKHL51zWrMKruvLxFG\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x3cb0b7216007b942f7611d7b3d983c0df9408fdd4fd6b799c33fc9033e0abf8b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://17901a1fd3635f441671e14ece8ecc6806af20c5eb80cca3b7c6e53a51fef7b6\",\"dweb:/ipfs/QmUXXMfU6nmsyEnufyGEwyZ5M7pzpXNTr6vw32e3JjjoZp\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xc1007d1082050b532947d27973bf996da2b0df9bdf6ed4d4fcaaa3ff2354262c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2d22da1d2140b1ed3964ddc62d3a38e9a24a8814c18ffe496f0fbce5afef5ea0\",\"dweb:/ipfs/QmYxVnaU87HSaQktkqCZZBFj3MgphgFsZMrMLXLeZLzrvR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x2166f766b7f61f9bb1376b0948efa0d0c0046b93dc301e51ce495203b145189b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://929630e6a15f523b142b2897783b2f7a54532ac5ae578bd17a0b7f25a6ca2bd8\",\"dweb:/ipfs/QmTu9ffH9qbQncJGEc24bmnoCGjifQ7BG47AYR8AzMLfXR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9189eaba9e856cc4932ea29eeaf4e89a09448dde13860591691ec122856fdc75\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7d5991b906bba706373f5bfe3c2c8789a7a45360a41eee50574272b393c4ab70\",\"dweb:/ipfs/QmVCXVnYA13vMNxa7rGzNB129sUXiGE1asuHdnEMEPVZsp\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/libs/Int96SafeMath.sol\":{\"keccak256\":\"0xbd674ccbea4bc7c5cf1af19cf31fcd5261ac913f5909992c18b7832aef02721b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://c2e8c9ded61ea509eccca9a99dd3f4aaa3ef4132720056e4ce4086bce21f3b68\",\"dweb:/ipfs/QmfD9idja1rMjKF5XMCKeDfzG5KAMejuSmFATLVTUQb5nj\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0x5f50cec21a585dab7b59545aeb51735f36e3222e4b0768370be8d46373d0ef05\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://acdd57d81b5b2d346da335636baf1e37da3d31cf2eef58af493e43bc65a27414\",\"dweb:/ipfs/QmTepRBNAfRBXVDBM37ME1jpw1YgcseVehC17sWpEYeFDc\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xffec084e77ce3c0b595f0612687242f3d8b7a84cab15e5650c17428ee48d0b5b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://be0183816467872b053562d9a737042ac3a91ea67e3c74e03de5db7226f3e73b\",\"dweb:/ipfs/QmUyi4YXh1T7MExbrLwZ6rAdXTPChF8q27YpZxxniR6CHM\"]}},\"version\":1}",
902
- "bytecode": "0x60a06040523480156200001157600080fd5b506040516200550f3803806200550f833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161547b620000946000396000610777015261547b6000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c806350d75d25116100f957806394229ecb11610097578063aabd266811610071578063aabd26681461042e578063b4b333c614610441578063e6a1e88814610454578063e8e7e2d11461046757600080fd5b806394229ecb146103ed5780639b2e48bc146104005780639cb28b72146102aa57600080fd5b806362fc305e116100d357806362fc305e1461038e5780637730599e146103a1578063811b3d40146103c75780638d997f6e146103da57600080fd5b806350d75d251461035357806352d1902d1461037357806354b770e31461037b57600080fd5b806326b0f536116101665780634b839e0b116101405780634b839e0b146102e05780634c8b181f146103035780634fe9c2911461031657806350209a621461034057600080fd5b806326b0f536146102aa578063354b9590146102b857806346951954146102cb57600080fd5b8062422bbe146101ad57806304aafa49146101e55780630602f7db146101ff578063062e56ec1461022557806309d256ef146102455780630f1ac49514610274575b600080fd5b6101c06101bb3660046146bd565b61047a565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b6101f164010000000081565b6040519081526020016101dc565b61021261020d366004614708565b6104b0565b604051600b9190910b81526020016101dc565b610238610233366004614776565b6104d1565b6040516101dc9190614837565b610258610253366004614708565b6104eb565b6040805160ff9093168352600b9190910b6020830152016101dc565b61028761028236600461484a565b61050f565b60408051948552600b9390930b60208501529183015260608201526080016101dc565b6101f160016001605f1b0381565b6102386102c6366004614895565b610545565b6102de6102d9366004614921565b61076c565b005b6102f36102ee36600461493e565b6107f0565b60405190151581526020016101dc565b61023861031136600461497f565b6108c7565b61032961032436600461484a565b6109e1565b6040805192151583526020830191909152016101dc565b61023861034e3660046149fb565b610ac3565b61035b610b96565b6040516001600160a01b0390911681526020016101dc565b6101f1610bc5565b610238610389366004614776565b610c29565b61023861039c3660046149fb565b610c41565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36101f1565b6102386103d5366004614a4b565b610cf4565b6101f16103e8366004614a8f565b610f7e565b6102386103fb366004614895565b611199565b61041361040e36600461493e565b611379565b604080519384526020840192909252908201526060016101dc565b61028761043c366004614708565b6113d3565b61023861044f36600461497f565b6113e5565b6102876104623660046146bd565b611479565b61021261047536600461484a565b6114b4565b600080600061048985856114ce565b925060006104978785611539565b8051602090910151959990985094965093945050505050565b6000806104bc846115fe565b5090506104c98184611779565b949350505050565b60606104e285856000808787610cf4565b95945050505050565b60008060006104fa8585611539565b80516020909101519097909650945050505050565b600080600080600061052187876117e8565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006105898885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036105f55760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f55504441544500000000000000000060448201526064015b60405180910390fd5b60008061060b8a6106068b8b611a65565b611a8d565b9150915060008060006106238d8d886060015161047a565b925092509250610634826001611ad4565b6106805760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f5550444154455f464c4f570000000000000060448201526064016105ec565b6000600b82900b60016001605f1b0314806106a557508a600b0b8560200151600b0b12155b6106c75760208501516106b8908c614ada565b6106c29083614ada565b6106c9565b815b9050600081600b0b12156106ef5760405162461bcd60e51b81526004016105ec90614b2a565b6106fb8e858584611b2f565b5050505061072960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b606082015261075d8183858a8a89611bb8565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e45760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016105ec565b6107ed81611d3d565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190614b6b565b505090506000811261087c5760019150506108c0565b600080610888876115fe565b91509150600061089888886117e8565b91505060006108aa8260400151611f4b565b90506108b885828686611fb9565b955050505050505b9392505050565b6060600061090b8785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061091e8888846060015161047a565b50915050600061092f826002611ad4565b90508061097e5760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f44454c4554455f464c4f570000000000000060448201526064016105ec565b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109d38183898988611ff6565b9a9950505050505050505050565b6000806000846001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190614ba4565b9050806001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac9190614bc1565b9150610ab98585846107f0565b9250509250929050565b60606000610b078785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610b3360408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610b7191611a65565b9050600080610b84846000015184611a8d565b9150915061075d8482848b8b8a611bb8565b6000610bc07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190614bc1565b60606104e28585600760016001605f1b038787610cf4565b60606000610c858785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610cb160408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610ce88186868561278d565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610d3b925087915061292d9050565b610d875760405162461bcd60e51b815260206004820152601860248201527f4346413a20556e636c65616e207065726d697373696f6e73000000000000000060448201526064016105ec565b6000610dc98885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b031603610e305760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f53454e4445525f464c4f575f4f50455241544f52000060448201526064016105ec565b600085600b0b1215610e845760405162461bcd60e51b815260206004820152601c60248201527f4346413a20455f4e4f5f4e454741544956455f414c4c4f57414e43450000000060448201526064016105ec565b6040805180820190915260ff87168152600b86900b60208201526060820151600090610eb0908a6114ce565b9050896001600160a01b031663a1b2bf8b82610ecb85612934565b6040518363ffffffff1660e01b8152600401610ee8929190614c15565b600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600080836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe39190614ba4565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110499190614ba4565b90506000816001600160a01b03166380f70cba84887feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161109d93929190614c2e565b602060405180830381865afa1580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614bc1565b90506000826001600160a01b03166380f70cba85897fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161113293929190614c2e565b602060405180830381865afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190614bc1565b9050602081901c63ffffffff1661118b8382896129aa565b955050505050505b92915050565b606060006111dd8885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036112445760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f43524541544500000000000000000060448201526064016105ec565b60008060006112588b8b866060015161047a565b925092509250611269826000611ad4565b6112b55760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f4f50455241544f525f4352454154455f464c4f57000060448201526064016105ec565b6000600b82900b60016001605f1b03146112d8576112d38983614ada565b6112da565b815b9050600081600b0b12156113005760405162461bcd60e51b81526004016105ec90614b2a565b61130c8c858584611b2f565b5050505061133a60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b606082015261136c8186868561278d565b9998505050505050505050565b600080600080600061138b88886117e8565b9150915081156113c8578060200151600b0b8160000151876113ad9190614c52565b6113b79190614c91565b945080604001519350806060015192505b505093509350939050565b60008060008060006105218787611a8d565b606060006114298785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061143c8888846060015161047a565b50915050600061144d826002611ad4565b90506109a360408051608081018252600080825260208201819052918101829052606081019190915290565b600080600080600061148f886106068989611a65565b805160208201516040830151606090930151919c909b50919950975095505050505050565b6000806114c184846117e8565b6020015195945050505050565b6000828260405160200161151b9291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c99190810190614d87565b90506115f1816000815181106115e1576115e1614e21565b602002602001015160001c612a7f565b92509250505b9250929050565b6000806000836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190614ba4565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cb9190614ba4565b90506000816001600160a01b03166380f70cba84887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161171f93929190614c2e565b602060405180830381865afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190614bc1565b63ffffffff602082901c81169891169650945050505050565b600060016001605f1b038211156117d25760405162461bcd60e51b815260206004820152601b60248201527f4346413a206465706f736974206e756d62657220746f6f20626967000000000060448201526064016105ec565b63ffffffff198216915060006104c98484614e4d565b60006117f26145f6565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611851573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118799190810190614d87565b90506115f18160008151811061189157611891614e21565b602002602001015160001c612ab7565b6118a9614621565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119159190614ba4565b6001600160a01b03161461195f5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016105ec565b604051632fd0a1cd60e21b8152339063bf42873490611982908590600401614837565b602060405180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c39190614e71565b6119fd5760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016105ec565b604051631fb6491d60e11b81523390633f6c923a90611a20908590600401614837565b600060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c09190810190614f13565b604080516001600160a01b03808516602083015283169181019190915260009060600161151b565b6000611a976145f6565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611834565b600080826002811115611ae957611ae961501a565b03611afa5750600182811614611193565b6001826002811115611b0e57611b0e61501a565b03611b215750600182811c811614611193565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611b6284612934565b6040518363ffffffff1660e01b8152600401611b7f929190614c15565b600060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050505050505050565b60606000611bc68884612b17565b91505085611c115760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f9190614e71565b15611cdb57611cd488604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612c8a9050565b9150611d26565b611d238860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506133a7915050565b91505b8751611d32908461347f565b509695505050505050565b6000611d677f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611dbd5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016105ec565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190614bc1565b611e27610bc5565b14611e805760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016105ec565b6001600160a01b0381163003611ed85760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016105ec565b611f00817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc611f29610bc5565b604080519182526001600160a01b03841660208301520160405180910390a150565b60006001600160ff1b03821115611fb55760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016105ec565b5090565b600080611fc68587615030565b90506000611fd48587615071565b9050611fe0848661509f565b611fea8284615071565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b03166120795760405162461bcd60e51b81526020600482015260136024820152724346413a2073656e646572206973207a65726f60681b60448201526064016105ec565b60408701516001600160a01b03166120cb5760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b6120dd87602001518860400151611a65565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a0808601519084015288519091829161213391611a8d565b915091508161217f5760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc926121cb926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190614b6b565b5050905089602001516001600160a01b031686606001516001600160a01b031614158015612254575089604001516001600160a01b031686606001516001600160a01b031614155b801561225e575088155b156123aa5760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156122ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d19190614e71565b158015612349575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa158015612323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123479190614e71565b155b156123aa57600081126123aa5760405162461bcd60e51b815260206004820152602360248201527f4346413a2073656e646572206163636f756e74206973206e6f7420637269746960448201526218d85b60ea1b60648201526084016105ec565b60008112156123c8576123c88a600001518286858a60600151613596565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036124be5760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190614e71565b156124af576124a88a604001518b600001518685898b6002612c8a565b9450612780565b89516124a8908584888a6133a7565b89604001516001600160a01b031686606001516001600160a01b0316036125f25760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614e71565b1561256a576124a88a602001518b600001518685898b6002612c8a565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190614e71565b156124af576124a860008b600001518685898b6002612c8a565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190614e71565b801561266c5750600081125b156126e65760208a0151604051635b92108f60e11b8152339163b724211e9161269c918991600b906004016150b6565b6000604051808303816000875af11580156126bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126e391908101906150e4565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614e71565b15612771576124a88a604001518b600001518685898b6002612c8a565b89516109d3908584888a6133a7565b5050505095945050505050565b606060008061279c8785612b17565b915091506000806127b1896000015185611a8d565b9150915081156128035760405162461bcd60e51b815260206004820152601760248201527f4346413a20666c6f7720616c726561647920657869737400000000000000000060448201526064016105ec565b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561284d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128719190614e71565b156128ca576128c389604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612c8a9050565b9450612915565b612912896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92506133a7915050565b94505b8851612921908761347f565b50505050949350505050565b60f8161590565b606060008260200151600b0b121561294e5761294e615119565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b8160008151811061299957612999614e21565b602002602001018181525050919050565b60008082600b0b13612a0a5760405162461bcd60e51b815260206004820152602360248201527f4346413a206e6f7420666f72206e6f6e2d706f73697469766520666c6f77207260448201526261746560e81b60648201526084016105ec565b60016001605f1b03612a2084600b85900b61512f565b1115612a675760405162461bcd60e51b81526020600482015260166024820152754346413a20666c6f77207261746520746f6f2062696760501b60448201526064016105ec565b6000612a7383856137a2565b90506104e28582613821565b6040805180820190915260008082526020820152811580159190612ab257600b83900b6020820152608083901c60ff1681525b915091565b6000612ac16145f6565b821580159250612ab25760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612b995760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b612bab84602001518560400151611a65565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612c3a5760405162461bcd60e51b81526020600482015260116024820152704346413a206e6f2073656c6620666c6f7760781b60448201526064016105ec565b60008160800151600b0b136115f75760405162461bcd60e51b81526020600482015260166024820152754346413a20696e76616c696420666c6f77207261746560501b60448201526064016105ec565b82612c9361467c565b6001600160a01b03891615612e7c576000612d28898b8a600001518b602001518c60400151604051602001612cde9291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612d3e57612d3e61501a565b03612d535764010000000060c0820152612d88565b6001846002811115612d6757612d6761501a565b03612d7c5764040000000060c0820152612d88565b64100000000060c08201525b612d928187613837565b82526040850151610140860151612dac91908b8b8b6139ee565b506080830152508451612dc090600161514e565b60ff168160800151612dd2919061512f565b60808201526060870151612de590611f4b565b60a08201526000846002811115612dfe57612dfe61501a565b03612e135764020000000060c0820152612e48565b6001846002811115612e2757612e2761501a565b03612e3c5764080000000060c0820152612e48565b64200000000060c08201525b612e5781836000015185613e40565b60408401919091528851909350612e6f908a90611a8d565b602084015250612e9a9050565b612e9284604001518561014001518a8a8a6139ee565b602084015250505b6000816040015161010001511315612ed957612ece612ec9612ec4836040015161010001516140a9565b6140fb565b611f4b565b604082015161010001525b6000612ee88760600151611f4b565b82604001516101000151612efc9190614c52565b9050612f2281612f13846020015160400151611f4b565b612f1d9190615030565b6140a9565b82602001516040018181525050612f4481612f13846020015160600151611f4b565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b91612f6f9061412f565b6040518363ffffffff1660e01b8152600401612f8c929190614c15565b600060405180830381600087803b158015612fa657600080fd5b505af1158015612fba573d6000803e3d6000fd5b50505050612fd689896020015160008460008a604001516141a0565b50612fee898960400151600080858a604001516141a0565b506101408501516001600160a01b031615806130205750886001600160a01b03168561014001516001600160a01b0316145b1561309e57602082015160409081015190516303c9790560e11b81523391630792f20a916130549187918690600401615173565b6000604051808303816000875af1158015613073573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261309b91908101906150e4565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190614e71565b1561339a57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa15801561316c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131909190614b6b565b509091505060008112156133985760028560028111156131b2576131b261501a565b0361333d576040808a01519051635b92108f60e11b8152339163b724211e916131e2918891600c906004016150b6565b6000604051808303816000875af1158015613201573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261322991908101906150e4565b9350600061325161323983615198565b61324c600061324787615198565b614346565b614355565b90508a6001600160a01b031663cf97256d8b602001518361327190615198565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156132b757600080fd5b505af11580156132cb573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561331f57600080fd5b505af1158015613333573d6000803e3d6000fd5b5050505050613398565b60405162461bcd60e51b815260206004820152602a60248201527f4346413a204150505f52554c455f4e4f5f435249544943414c5f524543454956604482015269115497d050d0d3d5539560b21b60648201526084016105ec565b505b5050979650505050505050565b606083810151156133ba576133ba615119565b60006133c46145f6565b6133da84604001518561014001518a8a8a6139ee565b6101408701519294509250506001600160a01b03808a169116036134705760408082015190516303c9790560e11b81523391630792f20a916134229189918790600401615173565b6000604051808303816000875af1158015613441573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346991908101906150e4565b9250613474565b8492505b505095945050505050565b602081015160ff1660031415806134ad5750816001600160a01b03168161014001516001600160a01b031614155b156135925760608101516040808301519051633acd4df360e21b81526001600160a01b039283166004820152602481019190915260009184169063eb3537cc90604401606060405180830381865afa15801561350d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135319190614b6b565b5050905060008112156135905760405162461bcd60e51b815260206004820152602160248201527f4346413a206e6f7420656e6f75676820617661696c61626c652062616c616e636044820152606560f81b60648201526084016105ec565b505b5050565b60006135a68685602001516117e8565b91505060006135b88460400151611f4b565b905060006135c98360400151611f4b565b905060606000806135da848b615030565b90506000806135e88d6115fe565b915091506135f88c878484611fb9565b93505050600081126136e3576000846136118388614c91565b61361b9190615071565b905060018361362b57600161362e565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f6020015161367d886140a9565b61368989600019614c91565b6040518863ffffffff1660e01b81526004016136ab97969594939291906151b4565b600060405180830381600087803b1580156136c557600080fd5b505af11580156136d9573d6000803e3d6000fd5b5050505050613795565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f60200151613733886140a9565b61373f8a600019614c91565b6040518863ffffffff1660e01b815260040161376197969594939291906151b4565b600060405180830381600087803b15801561377b57600080fd5b505af115801561378f573d6000803e3d6000fd5b50505050505b5050505050505050505050565b600082600b0b6000036137b757506000611193565b60016001605f1b038211156137ce576137ce615119565b61381382604051806040016040528060158152602001744346413a206465706f736974206f766572666c6f7760581b81525085600b0b61436a9092919063ffffffff16565b600b0b90506108c0816140fb565b600081831161383057816108c0565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa15801561388b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138af9190615201565b919450925090508280156138c1575081155b156139e55760006138d28688614402565b90508660c0015182166000036139d75760006138f18860c00151614480565b88516040808b015160608c01518251600081526020810190935261391d9392309291906044810161523d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e029261398c9291869164100000000091909114908890600401615282565b6000604051808303816000875af11580156139ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139d391908101906150e4565b9550505b6139e2866000614517565b50505b50505092915050565b6000806139f96145f6565b6000806000613a07896115fe565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6e9190614ba4565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613ac19033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614c2e565b602060405180830381865afa158015613ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b029190614bc1565b9250613b128960800151836137a2565b95505050613b238660600151611f4b565b613b308760400151611f4b565b613b3986611f4b565b613b439190614c52565b613b4d9190615030565b9450613b6085612f138860400151611f4b565b91508082108015613b78575060008760800151600b0b135b15613bba57613b8a8660600151611f4b565b613b978760400151611f4b565b613ba083611f4b565b613baa9190614c52565b613bb49190615030565b94508091505b6001600160a01b03891615801590613be45750876001600160a01b0316896001600160a01b031614155b15613bee57600093505b604051806080016040528060008960800151600b0b13613c0f576000613c11565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613c508661412f565b6040518363ffffffff1660e01b8152600401613c6d929190614c15565b600060405180830381600087803b158015613c8757600080fd5b505af1158015613c9b573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613cbb915050565b613d1b888860200151613d128a60800151604051806040016040528060168152602001754346413a20666c6f7772617465206f766572666c6f7760501b8152508b60200151600b0b61453f9092919063ffffffff16565b8860008f6141a0565b600b90810b82526040808901516020808a0151835180850190945260168452754346413a20666c6f7772617465206f766572666c6f7760501b9184019190915260808b0151613d7e948d94613d75939290910b919061453f565b6000808f6141a0565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613de49493929091906152cb565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613e2b91815260200190565b60405180910390a25050955095509592505050565b613e48614621565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec09190615201565b88965091945092509050828015613ed5575081155b1561409e57613ee48489614402565b93508760c00151811660000361408c576000613f038960c00151614480565b89516040808c015160608d015182516000815260208101909352613f319392309291908e9060448101615303565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a8492613fa09291869164200000000091909114908b90600401615282565b6000604051808303816000875af1158015613fbf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fe791908101906150e4565b604051631fb6491d60e11b81529095503390633f6c923a9061400d908890600401614837565b600060405180830381865afa15801561402a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140529190810190614f13565b955061408460006132476140698c60800151611f4b565b61324c6140798b60e00151611f4b565b8b6101000151614346565b610100870152505b61409b86866101000151614517565b93505b505050935093915050565b600080821215611fb55760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016105ec565b60008063ffffffff8316614110576000614113565b60015b60ff16905060206141268285831c61535c565b901b9392505050565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b8160008151811061299957612999614e21565b6000806141ad88886117e8565b91505060008160200151600b0b6141cd836000015186612ec9919061509f565b6141d79190614c91565b905080156142425760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561422957600080fd5b505af115801561423d573d6000803e3d6000fd5b505050505b61428c87604051806040016040528060168152602001754346413a20666c6f7772617465206f766572666c6f7760501b8152508460200151600b0b61459b9092919063ffffffff16565b600b0b602083015283825260408201516142ab908790612f1390611f4b565b604083015260608201516142c4908690612f1390611f4b565b60608301526001600160a01b03891663090c415e8960006142e48661412f565b6040518463ffffffff1660e01b815260040161430293929190615374565b600060405180830381600087803b15801561431c57600080fd5b505af1158015614330573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b600081831361383057816108c0565b600081831361436457826108c0565b50919050565b600083600b0b60000361437f575060006108c0565b83600b0b6000191480156143a35750600b83900b6b7fffffffffffffffffffffff19145b1582906143c35760405162461bcd60e51b81526004016105ec9190614837565b50838302600b84900b6143d6868361539b565b600b0b1483906143f95760405162461bcd60e51b81526004016105ec9190614837565b50949350505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614439948a946004016153de565b6000604051808303816000875af1158015614458573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c091908101906150e4565b6000640100000000820361449c57506330d9c91560e01b919050565b64040000000082036144b65750630221347d60e61b919050565b64100000000082036144d05750635f9e7d7760e01b919050565b64020000000082036144ea575063d86ed3e560e01b919050565b6408000000008203614504575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906144399086908690600401615423565b6000828403600b84900b821380159061455e575084600b0b81600b0b13155b8061457c5750600084600b0b12801561457c575084600b0b81600b0b135b83906143f95760405162461bcd60e51b81526004016105ec9190614837565b6000838301600b84900b82138015906145ba575084600b0b81600b0b12155b8061457c5750600084600b0b12801561457c575084600b0b81600b0b1283906143f95760405162461bcd60e51b81526004016105ec9190614837565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016146966145f6565b81526020016146a3614621565b905290565b6001600160a01b03811681146107ed57600080fd5b6000806000606084860312156146d257600080fd5b83356146dd816146a8565b925060208401356146ed816146a8565b915060408401356146fd816146a8565b809150509250925092565b6000806040838503121561471b57600080fd5b8235614726816146a8565b946020939093013593505050565b60008083601f84011261474657600080fd5b50813567ffffffffffffffff81111561475e57600080fd5b6020830191508360208285010111156115f757600080fd5b6000806000806060858703121561478c57600080fd5b8435614797816146a8565b935060208501356147a7816146a8565b9250604085013567ffffffffffffffff8111156147c357600080fd5b6147cf87828801614734565b95989497509550505050565b60005b838110156147f65781810151838201526020016147de565b83811115614805576000848401525b50505050565b600081518084526148238160208601602086016147db565b601f01601f19169290920160200192915050565b6020815260006108c0602083018461480b565b6000806040838503121561485d57600080fd5b8235614868816146a8565b91506020830135614878816146a8565b809150509250929050565b8035600b81900b811461451257600080fd5b60008060008060008060a087890312156148ae57600080fd5b86356148b9816146a8565b955060208701356148c9816146a8565b945060408701356148d9816146a8565b93506148e760608801614883565b9250608087013567ffffffffffffffff81111561490357600080fd5b61490f89828a01614734565b979a9699509497509295939492505050565b60006020828403121561493357600080fd5b81356108c0816146a8565b60008060006060848603121561495357600080fd5b833561495e816146a8565b9250602084013561496e816146a8565b929592945050506040919091013590565b60008060008060006080868803121561499757600080fd5b85356149a2816146a8565b945060208601356149b2816146a8565b935060408601356149c2816146a8565b9250606086013567ffffffffffffffff8111156149de57600080fd5b6149ea88828901614734565b969995985093965092949392505050565b600080600080600060808688031215614a1357600080fd5b8535614a1e816146a8565b94506020860135614a2e816146a8565b93506149c260408701614883565b60ff811681146107ed57600080fd5b60008060008060008060a08789031215614a6457600080fd5b8635614a6f816146a8565b95506020870135614a7f816146a8565b945060408701356148d981614a3c565b60008060408385031215614aa257600080fd5b8235614aad816146a8565b9150614abb60208401614883565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600081600b0b83600b0b600081128160016001605f1b031901831281151615614b0557614b05614ac4565b8160016001605f1b03018313811615614b2057614b20614ac4565b5090039392505050565b60208082526021908201527f4346413a20455f4558434545445f464c4f575f524154455f414c4c4f57414e436040820152604560f81b606082015260800190565b600080600060608486031215614b8057600080fd5b8351925060208401519150604084015190509250925092565b8051614512816146a8565b600060208284031215614bb657600080fd5b81516108c0816146a8565b600060208284031215614bd357600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614c0a57815187529582019590820190600101614bee565b509495945050505050565b8281526040602082015260006104c96040830184614bda565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008083128015600160ff1b850184121615614c7057614c70614ac4565b6001600160ff1b0384018313811615614c8b57614c8b614ac4565b50500390565b60006001600160ff1b0381841382841380821686840486111615614cb757614cb7614ac4565b600160ff1b6000871282811687830589121615614cd657614cd6614ac4565b60008712925087820587128484161615614cf257614cf2614ac4565b87850587128184161615614d0857614d08614ac4565b505050929093029392505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614d5057614d50614d16565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614d7f57614d7f614d16565b604052919050565b60006020808385031215614d9a57600080fd5b825167ffffffffffffffff80821115614db257600080fd5b818501915085601f830112614dc657600080fd5b815181811115614dd857614dd8614d16565b8060051b9150614de9848301614d56565b8181529183018401918481019088841115614e0357600080fd5b938501935b83851015610ce857845182529385019390850190614e08565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614e5c57614e5c614e37565b500490565b8051801515811461451257600080fd5b600060208284031215614e8357600080fd5b6108c082614e61565b805161451281614a3c565b80516001600160e01b03198116811461451257600080fd5b600082601f830112614ec057600080fd5b815167ffffffffffffffff811115614eda57614eda614d16565b614eed601f8201601f1916602001614d56565b818152846020838601011115614f0257600080fd5b6104c98260208301602087016147db565b600060208284031215614f2557600080fd5b815167ffffffffffffffff80821115614f3d57600080fd5b908301906101608286031215614f5257600080fd5b614f5a614d2c565b614f6383614e8c565b8152614f7160208401614e8c565b602082015260408301516040820152614f8c60608401614b99565b6060820152614f9d60808401614e97565b608082015260a083015182811115614fb457600080fd5b614fc087828601614eaf565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150614ff7828401614b99565b82820152610140915061500b828401614b99565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600080821280156001600160ff1b038490038513161561505257615052614ac4565b600160ff1b839003841281161561506b5761506b614ac4565b50500190565b60008261508057615080614e37565b600160ff1b82146000198414161561509a5761509a614ac4565b500590565b6000828210156150b1576150b1614ac4565b500390565b6060815260006150c9606083018661480b565b6001600160a01b039490941660208301525060400152919050565b6000602082840312156150f657600080fd5b815167ffffffffffffffff81111561510d57600080fd5b6104c984828501614eaf565b634e487b7160e01b600052600160045260246000fd5b600081600019048311821515161561514957615149614ac4565b500290565b600060ff821660ff84168060ff0382111561516b5761516b614ac4565b019392505050565b606081526000615186606083018661480b565b60208301949094525060400152919050565b6000600160ff1b82016151ad576151ad614ac4565b5060000390565b87815260e0602082015260006151cd60e083018961480b565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b60008060006060848603121561521657600080fd5b61521f84614e61565b925061522d60208501614e61565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152709083018561480b565b8281036080840152610ce8818561480b565b6001600160a01b03851681526080602082018190526000906152a69083018661480b565b841515604084015282810360608401526152c0818561480b565b979650505050505050565b84600b0b815283600b0b602082015282600b0b60408201526080606082015260006152f9608083018461480b565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906153369083018661480b565b8281036080840152615348818661480b565b905082810360a084015261136c818561480b565b6000821982111561536f5761536f614ac4565b500190565b60018060a01b03841681528260208201526060604082015260006104e26060830184614bda565b600081600b0b83600b0b806153b2576153b2614e37565b6b7fffffffffffffffffffffff198214600019821416156153d5576153d5614ac4565b90059392505050565b60a0815260006153f160a083018861480b565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b604081526000615436604083018561480b565b9050826020830152939250505056fea2646970667358221220788957050e22b9ebe6af17faa7b47a66569277648801214aaefc6706dc90c9ac64736f6c634300080d0033",
903
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a85760003560e01c806350d75d25116100f957806394229ecb11610097578063aabd266811610071578063aabd26681461042e578063b4b333c614610441578063e6a1e88814610454578063e8e7e2d11461046757600080fd5b806394229ecb146103ed5780639b2e48bc146104005780639cb28b72146102aa57600080fd5b806362fc305e116100d357806362fc305e1461038e5780637730599e146103a1578063811b3d40146103c75780638d997f6e146103da57600080fd5b806350d75d251461035357806352d1902d1461037357806354b770e31461037b57600080fd5b806326b0f536116101665780634b839e0b116101405780634b839e0b146102e05780634c8b181f146103035780634fe9c2911461031657806350209a621461034057600080fd5b806326b0f536146102aa578063354b9590146102b857806346951954146102cb57600080fd5b8062422bbe146101ad57806304aafa49146101e55780630602f7db146101ff578063062e56ec1461022557806309d256ef146102455780630f1ac49514610274575b600080fd5b6101c06101bb3660046146bd565b61047a565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b6101f164010000000081565b6040519081526020016101dc565b61021261020d366004614708565b6104b0565b604051600b9190910b81526020016101dc565b610238610233366004614776565b6104d1565b6040516101dc9190614837565b610258610253366004614708565b6104eb565b6040805160ff9093168352600b9190910b6020830152016101dc565b61028761028236600461484a565b61050f565b60408051948552600b9390930b60208501529183015260608201526080016101dc565b6101f160016001605f1b0381565b6102386102c6366004614895565b610545565b6102de6102d9366004614921565b61076c565b005b6102f36102ee36600461493e565b6107f0565b60405190151581526020016101dc565b61023861031136600461497f565b6108c7565b61032961032436600461484a565b6109e1565b6040805192151583526020830191909152016101dc565b61023861034e3660046149fb565b610ac3565b61035b610b96565b6040516001600160a01b0390911681526020016101dc565b6101f1610bc5565b610238610389366004614776565b610c29565b61023861039c3660046149fb565b610c41565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36101f1565b6102386103d5366004614a4b565b610cf4565b6101f16103e8366004614a8f565b610f7e565b6102386103fb366004614895565b611199565b61041361040e36600461493e565b611379565b604080519384526020840192909252908201526060016101dc565b61028761043c366004614708565b6113d3565b61023861044f36600461497f565b6113e5565b6102876104623660046146bd565b611479565b61021261047536600461484a565b6114b4565b600080600061048985856114ce565b925060006104978785611539565b8051602090910151959990985094965093945050505050565b6000806104bc846115fe565b5090506104c98184611779565b949350505050565b60606104e285856000808787610cf4565b95945050505050565b60008060006104fa8585611539565b80516020909101519097909650945050505050565b600080600080600061052187876117e8565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006105898885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036105f55760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f55504441544500000000000000000060448201526064015b60405180910390fd5b60008061060b8a6106068b8b611a65565b611a8d565b9150915060008060006106238d8d886060015161047a565b925092509250610634826001611ad4565b6106805760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f5550444154455f464c4f570000000000000060448201526064016105ec565b6000600b82900b60016001605f1b0314806106a557508a600b0b8560200151600b0b12155b6106c75760208501516106b8908c614ada565b6106c29083614ada565b6106c9565b815b9050600081600b0b12156106ef5760405162461bcd60e51b81526004016105ec90614b2a565b6106fb8e858584611b2f565b5050505061072960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b606082015261075d8183858a8a89611bb8565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e45760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016105ec565b6107ed81611d3d565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190614b6b565b505090506000811261087c5760019150506108c0565b600080610888876115fe565b91509150600061089888886117e8565b91505060006108aa8260400151611f4b565b90506108b885828686611fb9565b955050505050505b9392505050565b6060600061090b8785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061091e8888846060015161047a565b50915050600061092f826002611ad4565b90508061097e5760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f44454c4554455f464c4f570000000000000060448201526064016105ec565b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109d38183898988611ff6565b9a9950505050505050505050565b6000806000846001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190614ba4565b9050806001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac9190614bc1565b9150610ab98585846107f0565b9250509250929050565b60606000610b078785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610b3360408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610b7191611a65565b9050600080610b84846000015184611a8d565b9150915061075d8482848b8b8a611bb8565b6000610bc07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190614bc1565b60606104e28585600760016001605f1b038787610cf4565b60606000610c858785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610cb160408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610ce88186868561278d565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610d3b925087915061292d9050565b610d875760405162461bcd60e51b815260206004820152601860248201527f4346413a20556e636c65616e207065726d697373696f6e73000000000000000060448201526064016105ec565b6000610dc98885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b031603610e305760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f53454e4445525f464c4f575f4f50455241544f52000060448201526064016105ec565b600085600b0b1215610e845760405162461bcd60e51b815260206004820152601c60248201527f4346413a20455f4e4f5f4e454741544956455f414c4c4f57414e43450000000060448201526064016105ec565b6040805180820190915260ff87168152600b86900b60208201526060820151600090610eb0908a6114ce565b9050896001600160a01b031663a1b2bf8b82610ecb85612934565b6040518363ffffffff1660e01b8152600401610ee8929190614c15565b600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600080836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe39190614ba4565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110499190614ba4565b90506000816001600160a01b03166380f70cba84887feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161109d93929190614c2e565b602060405180830381865afa1580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614bc1565b90506000826001600160a01b03166380f70cba85897fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161113293929190614c2e565b602060405180830381865afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190614bc1565b9050602081901c63ffffffff1661118b8382896129aa565b955050505050505b92915050565b606060006111dd8885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036112445760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f43524541544500000000000000000060448201526064016105ec565b60008060006112588b8b866060015161047a565b925092509250611269826000611ad4565b6112b55760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f4f50455241544f525f4352454154455f464c4f57000060448201526064016105ec565b6000600b82900b60016001605f1b03146112d8576112d38983614ada565b6112da565b815b9050600081600b0b12156113005760405162461bcd60e51b81526004016105ec90614b2a565b61130c8c858584611b2f565b5050505061133a60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b606082015261136c8186868561278d565b9998505050505050505050565b600080600080600061138b88886117e8565b9150915081156113c8578060200151600b0b8160000151876113ad9190614c52565b6113b79190614c91565b945080604001519350806060015192505b505093509350939050565b60008060008060006105218787611a8d565b606060006114298785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061143c8888846060015161047a565b50915050600061144d826002611ad4565b90506109a360408051608081018252600080825260208201819052918101829052606081019190915290565b600080600080600061148f886106068989611a65565b805160208201516040830151606090930151919c909b50919950975095505050505050565b6000806114c184846117e8565b6020015195945050505050565b6000828260405160200161151b9291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c99190810190614d87565b90506115f1816000815181106115e1576115e1614e21565b602002602001015160001c612a7f565b92509250505b9250929050565b6000806000836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190614ba4565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cb9190614ba4565b90506000816001600160a01b03166380f70cba84887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161171f93929190614c2e565b602060405180830381865afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190614bc1565b63ffffffff602082901c81169891169650945050505050565b600060016001605f1b038211156117d25760405162461bcd60e51b815260206004820152601b60248201527f4346413a206465706f736974206e756d62657220746f6f20626967000000000060448201526064016105ec565b63ffffffff198216915060006104c98484614e4d565b60006117f26145f6565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611851573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118799190810190614d87565b90506115f18160008151811061189157611891614e21565b602002602001015160001c612ab7565b6118a9614621565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119159190614ba4565b6001600160a01b03161461195f5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016105ec565b604051632fd0a1cd60e21b8152339063bf42873490611982908590600401614837565b602060405180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c39190614e71565b6119fd5760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016105ec565b604051631fb6491d60e11b81523390633f6c923a90611a20908590600401614837565b600060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c09190810190614f13565b604080516001600160a01b03808516602083015283169181019190915260009060600161151b565b6000611a976145f6565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611834565b600080826002811115611ae957611ae961501a565b03611afa5750600182811614611193565b6001826002811115611b0e57611b0e61501a565b03611b215750600182811c811614611193565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611b6284612934565b6040518363ffffffff1660e01b8152600401611b7f929190614c15565b600060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050505050505050565b60606000611bc68884612b17565b91505085611c115760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f9190614e71565b15611cdb57611cd488604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612c8a9050565b9150611d26565b611d238860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506133a7915050565b91505b8751611d32908461347f565b509695505050505050565b6000611d677f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611dbd5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016105ec565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190614bc1565b611e27610bc5565b14611e805760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016105ec565b6001600160a01b0381163003611ed85760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016105ec565b611f00817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc611f29610bc5565b604080519182526001600160a01b03841660208301520160405180910390a150565b60006001600160ff1b03821115611fb55760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016105ec565b5090565b600080611fc68587615030565b90506000611fd48587615071565b9050611fe0848661509f565b611fea8284615071565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b03166120795760405162461bcd60e51b81526020600482015260136024820152724346413a2073656e646572206973207a65726f60681b60448201526064016105ec565b60408701516001600160a01b03166120cb5760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b6120dd87602001518860400151611a65565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a0808601519084015288519091829161213391611a8d565b915091508161217f5760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc926121cb926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190614b6b565b5050905089602001516001600160a01b031686606001516001600160a01b031614158015612254575089604001516001600160a01b031686606001516001600160a01b031614155b801561225e575088155b156123aa5760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156122ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d19190614e71565b158015612349575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa158015612323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123479190614e71565b155b156123aa57600081126123aa5760405162461bcd60e51b815260206004820152602360248201527f4346413a2073656e646572206163636f756e74206973206e6f7420637269746960448201526218d85b60ea1b60648201526084016105ec565b60008112156123c8576123c88a600001518286858a60600151613596565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036124be5760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190614e71565b156124af576124a88a604001518b600001518685898b6002612c8a565b9450612780565b89516124a8908584888a6133a7565b89604001516001600160a01b031686606001516001600160a01b0316036125f25760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614e71565b1561256a576124a88a602001518b600001518685898b6002612c8a565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190614e71565b156124af576124a860008b600001518685898b6002612c8a565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190614e71565b801561266c5750600081125b156126e65760208a0151604051635b92108f60e11b8152339163b724211e9161269c918991600b906004016150b6565b6000604051808303816000875af11580156126bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126e391908101906150e4565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614e71565b15612771576124a88a604001518b600001518685898b6002612c8a565b89516109d3908584888a6133a7565b5050505095945050505050565b606060008061279c8785612b17565b915091506000806127b1896000015185611a8d565b9150915081156128035760405162461bcd60e51b815260206004820152601760248201527f4346413a20666c6f7720616c726561647920657869737400000000000000000060448201526064016105ec565b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561284d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128719190614e71565b156128ca576128c389604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612c8a9050565b9450612915565b612912896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92506133a7915050565b94505b8851612921908761347f565b50505050949350505050565b60f8161590565b606060008260200151600b0b121561294e5761294e615119565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b8160008151811061299957612999614e21565b602002602001018181525050919050565b60008082600b0b13612a0a5760405162461bcd60e51b815260206004820152602360248201527f4346413a206e6f7420666f72206e6f6e2d706f73697469766520666c6f77207260448201526261746560e81b60648201526084016105ec565b60016001605f1b03612a2084600b85900b61512f565b1115612a675760405162461bcd60e51b81526020600482015260166024820152754346413a20666c6f77207261746520746f6f2062696760501b60448201526064016105ec565b6000612a7383856137a2565b90506104e28582613821565b6040805180820190915260008082526020820152811580159190612ab257600b83900b6020820152608083901c60ff1681525b915091565b6000612ac16145f6565b821580159250612ab25760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612b995760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b612bab84602001518560400151611a65565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612c3a5760405162461bcd60e51b81526020600482015260116024820152704346413a206e6f2073656c6620666c6f7760781b60448201526064016105ec565b60008160800151600b0b136115f75760405162461bcd60e51b81526020600482015260166024820152754346413a20696e76616c696420666c6f77207261746560501b60448201526064016105ec565b82612c9361467c565b6001600160a01b03891615612e7c576000612d28898b8a600001518b602001518c60400151604051602001612cde9291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612d3e57612d3e61501a565b03612d535764010000000060c0820152612d88565b6001846002811115612d6757612d6761501a565b03612d7c5764040000000060c0820152612d88565b64100000000060c08201525b612d928187613837565b82526040850151610140860151612dac91908b8b8b6139ee565b506080830152508451612dc090600161514e565b60ff168160800151612dd2919061512f565b60808201526060870151612de590611f4b565b60a08201526000846002811115612dfe57612dfe61501a565b03612e135764020000000060c0820152612e48565b6001846002811115612e2757612e2761501a565b03612e3c5764080000000060c0820152612e48565b64200000000060c08201525b612e5781836000015185613e40565b60408401919091528851909350612e6f908a90611a8d565b602084015250612e9a9050565b612e9284604001518561014001518a8a8a6139ee565b602084015250505b6000816040015161010001511315612ed957612ece612ec9612ec4836040015161010001516140a9565b6140fb565b611f4b565b604082015161010001525b6000612ee88760600151611f4b565b82604001516101000151612efc9190614c52565b9050612f2281612f13846020015160400151611f4b565b612f1d9190615030565b6140a9565b82602001516040018181525050612f4481612f13846020015160600151611f4b565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b91612f6f9061412f565b6040518363ffffffff1660e01b8152600401612f8c929190614c15565b600060405180830381600087803b158015612fa657600080fd5b505af1158015612fba573d6000803e3d6000fd5b50505050612fd689896020015160008460008a604001516141a0565b50612fee898960400151600080858a604001516141a0565b506101408501516001600160a01b031615806130205750886001600160a01b03168561014001516001600160a01b0316145b1561309e57602082015160409081015190516303c9790560e11b81523391630792f20a916130549187918690600401615173565b6000604051808303816000875af1158015613073573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261309b91908101906150e4565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190614e71565b1561339a57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa15801561316c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131909190614b6b565b509091505060008112156133985760028560028111156131b2576131b261501a565b0361333d576040808a01519051635b92108f60e11b8152339163b724211e916131e2918891600c906004016150b6565b6000604051808303816000875af1158015613201573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261322991908101906150e4565b9350600061325161323983615198565b61324c600061324787615198565b614346565b614355565b90508a6001600160a01b031663cf97256d8b602001518361327190615198565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156132b757600080fd5b505af11580156132cb573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561331f57600080fd5b505af1158015613333573d6000803e3d6000fd5b5050505050613398565b60405162461bcd60e51b815260206004820152602a60248201527f4346413a204150505f52554c455f4e4f5f435249544943414c5f524543454956604482015269115497d050d0d3d5539560b21b60648201526084016105ec565b505b5050979650505050505050565b606083810151156133ba576133ba615119565b60006133c46145f6565b6133da84604001518561014001518a8a8a6139ee565b6101408701519294509250506001600160a01b03808a169116036134705760408082015190516303c9790560e11b81523391630792f20a916134229189918790600401615173565b6000604051808303816000875af1158015613441573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346991908101906150e4565b9250613474565b8492505b505095945050505050565b602081015160ff1660031415806134ad5750816001600160a01b03168161014001516001600160a01b031614155b156135925760608101516040808301519051633acd4df360e21b81526001600160a01b039283166004820152602481019190915260009184169063eb3537cc90604401606060405180830381865afa15801561350d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135319190614b6b565b5050905060008112156135905760405162461bcd60e51b815260206004820152602160248201527f4346413a206e6f7420656e6f75676820617661696c61626c652062616c616e636044820152606560f81b60648201526084016105ec565b505b5050565b60006135a68685602001516117e8565b91505060006135b88460400151611f4b565b905060006135c98360400151611f4b565b905060606000806135da848b615030565b90506000806135e88d6115fe565b915091506135f88c878484611fb9565b93505050600081126136e3576000846136118388614c91565b61361b9190615071565b905060018361362b57600161362e565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f6020015161367d886140a9565b61368989600019614c91565b6040518863ffffffff1660e01b81526004016136ab97969594939291906151b4565b600060405180830381600087803b1580156136c557600080fd5b505af11580156136d9573d6000803e3d6000fd5b5050505050613795565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f60200151613733886140a9565b61373f8a600019614c91565b6040518863ffffffff1660e01b815260040161376197969594939291906151b4565b600060405180830381600087803b15801561377b57600080fd5b505af115801561378f573d6000803e3d6000fd5b50505050505b5050505050505050505050565b600082600b0b6000036137b757506000611193565b60016001605f1b038211156137ce576137ce615119565b61381382604051806040016040528060158152602001744346413a206465706f736974206f766572666c6f7760581b81525085600b0b61436a9092919063ffffffff16565b600b0b90506108c0816140fb565b600081831161383057816108c0565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa15801561388b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138af9190615201565b919450925090508280156138c1575081155b156139e55760006138d28688614402565b90508660c0015182166000036139d75760006138f18860c00151614480565b88516040808b015160608c01518251600081526020810190935261391d9392309291906044810161523d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e029261398c9291869164100000000091909114908890600401615282565b6000604051808303816000875af11580156139ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139d391908101906150e4565b9550505b6139e2866000614517565b50505b50505092915050565b6000806139f96145f6565b6000806000613a07896115fe565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6e9190614ba4565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613ac19033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614c2e565b602060405180830381865afa158015613ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b029190614bc1565b9250613b128960800151836137a2565b95505050613b238660600151611f4b565b613b308760400151611f4b565b613b3986611f4b565b613b439190614c52565b613b4d9190615030565b9450613b6085612f138860400151611f4b565b91508082108015613b78575060008760800151600b0b135b15613bba57613b8a8660600151611f4b565b613b978760400151611f4b565b613ba083611f4b565b613baa9190614c52565b613bb49190615030565b94508091505b6001600160a01b03891615801590613be45750876001600160a01b0316896001600160a01b031614155b15613bee57600093505b604051806080016040528060008960800151600b0b13613c0f576000613c11565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613c508661412f565b6040518363ffffffff1660e01b8152600401613c6d929190614c15565b600060405180830381600087803b158015613c8757600080fd5b505af1158015613c9b573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613cbb915050565b613d1b888860200151613d128a60800151604051806040016040528060168152602001754346413a20666c6f7772617465206f766572666c6f7760501b8152508b60200151600b0b61453f9092919063ffffffff16565b8860008f6141a0565b600b90810b82526040808901516020808a0151835180850190945260168452754346413a20666c6f7772617465206f766572666c6f7760501b9184019190915260808b0151613d7e948d94613d75939290910b919061453f565b6000808f6141a0565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613de49493929091906152cb565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613e2b91815260200190565b60405180910390a25050955095509592505050565b613e48614621565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec09190615201565b88965091945092509050828015613ed5575081155b1561409e57613ee48489614402565b93508760c00151811660000361408c576000613f038960c00151614480565b89516040808c015160608d015182516000815260208101909352613f319392309291908e9060448101615303565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a8492613fa09291869164200000000091909114908b90600401615282565b6000604051808303816000875af1158015613fbf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fe791908101906150e4565b604051631fb6491d60e11b81529095503390633f6c923a9061400d908890600401614837565b600060405180830381865afa15801561402a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140529190810190614f13565b955061408460006132476140698c60800151611f4b565b61324c6140798b60e00151611f4b565b8b6101000151614346565b610100870152505b61409b86866101000151614517565b93505b505050935093915050565b600080821215611fb55760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016105ec565b60008063ffffffff8316614110576000614113565b60015b60ff16905060206141268285831c61535c565b901b9392505050565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b8160008151811061299957612999614e21565b6000806141ad88886117e8565b91505060008160200151600b0b6141cd836000015186612ec9919061509f565b6141d79190614c91565b905080156142425760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561422957600080fd5b505af115801561423d573d6000803e3d6000fd5b505050505b61428c87604051806040016040528060168152602001754346413a20666c6f7772617465206f766572666c6f7760501b8152508460200151600b0b61459b9092919063ffffffff16565b600b0b602083015283825260408201516142ab908790612f1390611f4b565b604083015260608201516142c4908690612f1390611f4b565b60608301526001600160a01b03891663090c415e8960006142e48661412f565b6040518463ffffffff1660e01b815260040161430293929190615374565b600060405180830381600087803b15801561431c57600080fd5b505af1158015614330573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b600081831361383057816108c0565b600081831361436457826108c0565b50919050565b600083600b0b60000361437f575060006108c0565b83600b0b6000191480156143a35750600b83900b6b7fffffffffffffffffffffff19145b1582906143c35760405162461bcd60e51b81526004016105ec9190614837565b50838302600b84900b6143d6868361539b565b600b0b1483906143f95760405162461bcd60e51b81526004016105ec9190614837565b50949350505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614439948a946004016153de565b6000604051808303816000875af1158015614458573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c091908101906150e4565b6000640100000000820361449c57506330d9c91560e01b919050565b64040000000082036144b65750630221347d60e61b919050565b64100000000082036144d05750635f9e7d7760e01b919050565b64020000000082036144ea575063d86ed3e560e01b919050565b6408000000008203614504575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906144399086908690600401615423565b6000828403600b84900b821380159061455e575084600b0b81600b0b13155b8061457c5750600084600b0b12801561457c575084600b0b81600b0b135b83906143f95760405162461bcd60e51b81526004016105ec9190614837565b6000838301600b84900b82138015906145ba575084600b0b81600b0b12155b8061457c5750600084600b0b12801561457c575084600b0b81600b0b1283906143f95760405162461bcd60e51b81526004016105ec9190614837565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016146966145f6565b81526020016146a3614621565b905290565b6001600160a01b03811681146107ed57600080fd5b6000806000606084860312156146d257600080fd5b83356146dd816146a8565b925060208401356146ed816146a8565b915060408401356146fd816146a8565b809150509250925092565b6000806040838503121561471b57600080fd5b8235614726816146a8565b946020939093013593505050565b60008083601f84011261474657600080fd5b50813567ffffffffffffffff81111561475e57600080fd5b6020830191508360208285010111156115f757600080fd5b6000806000806060858703121561478c57600080fd5b8435614797816146a8565b935060208501356147a7816146a8565b9250604085013567ffffffffffffffff8111156147c357600080fd5b6147cf87828801614734565b95989497509550505050565b60005b838110156147f65781810151838201526020016147de565b83811115614805576000848401525b50505050565b600081518084526148238160208601602086016147db565b601f01601f19169290920160200192915050565b6020815260006108c0602083018461480b565b6000806040838503121561485d57600080fd5b8235614868816146a8565b91506020830135614878816146a8565b809150509250929050565b8035600b81900b811461451257600080fd5b60008060008060008060a087890312156148ae57600080fd5b86356148b9816146a8565b955060208701356148c9816146a8565b945060408701356148d9816146a8565b93506148e760608801614883565b9250608087013567ffffffffffffffff81111561490357600080fd5b61490f89828a01614734565b979a9699509497509295939492505050565b60006020828403121561493357600080fd5b81356108c0816146a8565b60008060006060848603121561495357600080fd5b833561495e816146a8565b9250602084013561496e816146a8565b929592945050506040919091013590565b60008060008060006080868803121561499757600080fd5b85356149a2816146a8565b945060208601356149b2816146a8565b935060408601356149c2816146a8565b9250606086013567ffffffffffffffff8111156149de57600080fd5b6149ea88828901614734565b969995985093965092949392505050565b600080600080600060808688031215614a1357600080fd5b8535614a1e816146a8565b94506020860135614a2e816146a8565b93506149c260408701614883565b60ff811681146107ed57600080fd5b60008060008060008060a08789031215614a6457600080fd5b8635614a6f816146a8565b95506020870135614a7f816146a8565b945060408701356148d981614a3c565b60008060408385031215614aa257600080fd5b8235614aad816146a8565b9150614abb60208401614883565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600081600b0b83600b0b600081128160016001605f1b031901831281151615614b0557614b05614ac4565b8160016001605f1b03018313811615614b2057614b20614ac4565b5090039392505050565b60208082526021908201527f4346413a20455f4558434545445f464c4f575f524154455f414c4c4f57414e436040820152604560f81b606082015260800190565b600080600060608486031215614b8057600080fd5b8351925060208401519150604084015190509250925092565b8051614512816146a8565b600060208284031215614bb657600080fd5b81516108c0816146a8565b600060208284031215614bd357600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614c0a57815187529582019590820190600101614bee565b509495945050505050565b8281526040602082015260006104c96040830184614bda565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008083128015600160ff1b850184121615614c7057614c70614ac4565b6001600160ff1b0384018313811615614c8b57614c8b614ac4565b50500390565b60006001600160ff1b0381841382841380821686840486111615614cb757614cb7614ac4565b600160ff1b6000871282811687830589121615614cd657614cd6614ac4565b60008712925087820587128484161615614cf257614cf2614ac4565b87850587128184161615614d0857614d08614ac4565b505050929093029392505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614d5057614d50614d16565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614d7f57614d7f614d16565b604052919050565b60006020808385031215614d9a57600080fd5b825167ffffffffffffffff80821115614db257600080fd5b818501915085601f830112614dc657600080fd5b815181811115614dd857614dd8614d16565b8060051b9150614de9848301614d56565b8181529183018401918481019088841115614e0357600080fd5b938501935b83851015610ce857845182529385019390850190614e08565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614e5c57614e5c614e37565b500490565b8051801515811461451257600080fd5b600060208284031215614e8357600080fd5b6108c082614e61565b805161451281614a3c565b80516001600160e01b03198116811461451257600080fd5b600082601f830112614ec057600080fd5b815167ffffffffffffffff811115614eda57614eda614d16565b614eed601f8201601f1916602001614d56565b818152846020838601011115614f0257600080fd5b6104c98260208301602087016147db565b600060208284031215614f2557600080fd5b815167ffffffffffffffff80821115614f3d57600080fd5b908301906101608286031215614f5257600080fd5b614f5a614d2c565b614f6383614e8c565b8152614f7160208401614e8c565b602082015260408301516040820152614f8c60608401614b99565b6060820152614f9d60808401614e97565b608082015260a083015182811115614fb457600080fd5b614fc087828601614eaf565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150614ff7828401614b99565b82820152610140915061500b828401614b99565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600080821280156001600160ff1b038490038513161561505257615052614ac4565b600160ff1b839003841281161561506b5761506b614ac4565b50500190565b60008261508057615080614e37565b600160ff1b82146000198414161561509a5761509a614ac4565b500590565b6000828210156150b1576150b1614ac4565b500390565b6060815260006150c9606083018661480b565b6001600160a01b039490941660208301525060400152919050565b6000602082840312156150f657600080fd5b815167ffffffffffffffff81111561510d57600080fd5b6104c984828501614eaf565b634e487b7160e01b600052600160045260246000fd5b600081600019048311821515161561514957615149614ac4565b500290565b600060ff821660ff84168060ff0382111561516b5761516b614ac4565b019392505050565b606081526000615186606083018661480b565b60208301949094525060400152919050565b6000600160ff1b82016151ad576151ad614ac4565b5060000390565b87815260e0602082015260006151cd60e083018961480b565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b60008060006060848603121561521657600080fd5b61521f84614e61565b925061522d60208501614e61565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152709083018561480b565b8281036080840152610ce8818561480b565b6001600160a01b03851681526080602082018190526000906152a69083018661480b565b841515604084015282810360608401526152c0818561480b565b979650505050505050565b84600b0b815283600b0b602082015282600b0b60408201526080606082015260006152f9608083018461480b565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906153369083018661480b565b8281036080840152615348818661480b565b905082810360a084015261136c818561480b565b6000821982111561536f5761536f614ac4565b500190565b60018060a01b03841681528260208201526060604082015260006104e26060830184614bda565b600081600b0b83600b0b806153b2576153b2614e37565b6b7fffffffffffffffffffffff198214600019821416156153d5576153d5614ac4565b90059392505050565b60a0815260006153f160a083018861480b565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b604081526000615436604083018561480b565b9050826020830152939250505056fea2646970667358221220788957050e22b9ebe6af17faa7b47a66569277648801214aaefc6706dc90c9ac64736f6c634300080d0033",
901
+ "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uuid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"name\":\"CodeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"name\":\"FlowOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalSenderFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalReceiverFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"FlowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"FlowUpdatedExtension\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_MINIMUM_DEPOSIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DEPOSIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_FLOW_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"agreementType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"authorizeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountFlowInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCodeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"name\":\"getDepositRequiredForFlowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"getFlow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"flowId\",\"type\":\"bytes32\"}],\"name\":\"getFlowByID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"}],\"name\":\"getFlowOperatorData\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"}],\"name\":\"getFlowOperatorDataByID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"getMaximumFlowRateFromDeposit\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNetFlow\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isPatricianPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPatricianPeriodNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCurrentlyPatricianPeriod\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"dynamicBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"revokeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"updateCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowOperatorPermissions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Please read IConstantFlowAgreementV1 for implementation notes.For more technical notes, please visit protocol-monorepo wiki area.\",\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"authorizeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"IConstantFlowAgreementV1.authorizeFlowOperatorWithFullControl implementation\"},\"createFlow(address,address,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.createFlow implementation\"},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.createFlowByOperator implementation\"},\"deleteFlow(address,address,address,bytes)\":{\"details\":\"IConstantFlowAgreementV1.deleteFlow implementation\"},\"deleteFlowByOperator(address,address,address,bytes)\":{\"details\":\"IConstantFlowAgreementV1.deleteFlowByOperator implementation\"},\"getAccountFlowInfo(address,address)\":{\"details\":\"IConstantFlowAgreementV1.getAccountFlowInfo implementation\"},\"getCodeAddress()\":{\"details\":\"Get current implementation code address.\"},\"getDepositRequiredForFlowRate(address,int96)\":{\"details\":\"IConstantFlowAgreementV1.getDepositRequiredForFlowRate implementation\"},\"getFlow(address,address,address)\":{\"details\":\"IConstantFlowAgreementV1.getFlow implementation\"},\"getFlowByID(address,bytes32)\":{\"details\":\"IConstantFlowAgreementV1.getFlow implementation\"},\"getFlowOperatorData(address,address,address)\":{\"details\":\"IConstantFlowAgreementV1.getFlowOperatorData implementation\"},\"getFlowOperatorDataByID(address,bytes32)\":{\"details\":\"IConstantFlowAgreementV1.getFlowOperatorDataByID implementation\"},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"details\":\"IConstantFlowAgreementV1.getMaximumFlowRateFromDeposit implementation\"},\"getNetFlow(address,address)\":{\"details\":\"IConstantFlowAgreementV1.getNetFlow implementation\"},\"isPatricianPeriod(address,address,uint256)\":{\"details\":\"Returns whether it is the patrician period based on timestamp\",\"params\":{\"account\":\"The account we are interested in\",\"timestamp\":\"The timestamp we are interested in observing the result of isPatricianPeriod\"},\"returns\":{\"_0\":\"bool Whether it is currently the patrician period dictated by governance\"}},\"isPatricianPeriodNow(address,address)\":{\"details\":\"Returns whether it is the patrician period based on host.getNow()\",\"params\":{\"account\":\"The account we are interested in\"},\"returns\":{\"isCurrentlyPatricianPeriod\":\"Whether it is currently the patrician period dictated by governance\",\"timestamp\":\"The value of host.getNow()\"}},\"proxiableUUID()\":{\"details\":\"Proxiable UUID marker function, this would help to avoid wrong logic contract to be used for upgrading. NOTE: The semantics of the UUID deviates from the actual UUPS standard, where it is equivalent of _IMPLEMENTATION_SLOT.\"},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"ISuperAgreement.realtimeBalanceOf implementation\"},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"IConstantFlowAgreementV1.revokeFlowOperatorWithFullControl implementation\"},\"updateFlow(address,address,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.updateFlow implementation\"},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.updateFlowByOperator implementation\"},\"updateFlowOperatorPermissions(address,address,uint8,int96,bytes)\":{\"details\":\"IConstantFlowAgreementV1.updateFlowOperatorPermissions implementation\"}},\"stateVariables\":{\"DEFAULT_MINIMUM_DEPOSIT\":{\"details\":\"Default minimum deposit value NOTE: - It may come as a surprise that it is not 0, this is the minimum friction we have in the system for the imperfect blockchain system we live in. - It is related to deposit clipping, and it is always rounded-up when clipping.\"},\"MAXIMUM_DEPOSIT\":{\"details\":\"Maximum deposit value\"},\"MAXIMUM_FLOW_RATE\":{\"details\":\"Maximum flow rate\"}},\"title\":\"ConstantFlowAgreementV1 contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/agreements/ConstantFlowAgreementV1.sol\":\"ConstantFlowAgreementV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x4823752b07b8ea4ca971b217e39457930e7cb103c2c91e2a29729e5ca907e4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f319af26a9ade3e6cf3698bf1b84aa6213bdd7a76606ea9ba56ced163593934\",\"dweb:/ipfs/QmZ2u9zen5Htan4dSP1RZCY2XqB9HUwqkNCMzdn7aV2jWc\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x5c6caab697d302ad7eb59c234a4d2dbc965c1bae87709bd2850060b7695b28c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb62abcee612c175f1b9bc70e5dfe5bd23473c99987ade6e80e291f68dc60ff1\",\"dweb:/ipfs/QmZCMajhG7FtRYNDwBchXN89mXR6HLPVzr9732qfUdNf9E\"]},\"project:/contracts/agreements/AgreementBase.sol\":{\"keccak256\":\"0xe59fc8bbe728c574773b5d3a3e9cfb4e8f323e9a3c3267a82d36fb79921b9997\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://0e21d969b3b996ab211eff83fa5bb7041614c0ac597c7479012c0fe625f4e15f\",\"dweb:/ipfs/QmWThBae9FCDgCAcco2bZicvsPq8vz5K1XW66hz3LXSK2V\"]},\"project:/contracts/agreements/AgreementLibrary.sol\":{\"keccak256\":\"0x107ee59e59b54e9ee85997d135a9bfc97979eda1143c7b1b61b63959777bff91\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://1a235f5a0fc7a04143662a69279d513d2434eeb7d60afdcc57911dcfeef712e5\",\"dweb:/ipfs/QmbUDhcf9mizwLxyCttibMxEM9NUun4guT3Sc9vdEaSxAv\"]},\"project:/contracts/agreements/ConstantFlowAgreementV1.sol\":{\"keccak256\":\"0x70d3c2a51b84ec2830d8d18831f8a76685fafb21d86885da5b65104dadcb92a1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e2890de952db5d7a1b1960fe4fb8fd278c1b27f9cfe8e137d20acd16ab8b4d08\",\"dweb:/ipfs/QmTR96GTDuNQfkUvfzYCq3Tn94QQxDtmUWSj3JYmrvPnrG\"]},\"project:/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb96bb6cb0fe88ddf5b890b6826f7f7585cf6e94223c76d8e2fb269779afe4445\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://b864597ae952222f0f43c66943492966013021c4171d5ef4f7357c047dfd737c\",\"dweb:/ipfs/Qmcr7xicfmPDD343B34ETP3XrdU9Vi1z3zxJSgqLipfQmY\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x57f4203168992c940eb6b8c7cc75f854cb36a1f9323b3f39ddc5e4fbe819c043\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://888941dfa3e5004f678f215b98a85d1bf54e412317928a78e0a1cff090773d4c\",\"dweb:/ipfs/QmVe838upcAyqpy1d3oQNHJrbRyWCKHL51zWrMKruvLxFG\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x3cb0b7216007b942f7611d7b3d983c0df9408fdd4fd6b799c33fc9033e0abf8b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://17901a1fd3635f441671e14ece8ecc6806af20c5eb80cca3b7c6e53a51fef7b6\",\"dweb:/ipfs/QmUXXMfU6nmsyEnufyGEwyZ5M7pzpXNTr6vw32e3JjjoZp\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0x2d9b845469a35b66f1166406149ac85e933dbe9156f57e4a4078948e6a6e71a4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://48e5cb11d4b90e42af521e23b33d57e12187c989d8d56be332b1649308168d45\",\"dweb:/ipfs/QmdaTW4HfpFfHjkHiJ3CmZUmCfLJyFCPTnCygwhiNhx3Tu\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x2166f766b7f61f9bb1376b0948efa0d0c0046b93dc301e51ce495203b145189b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://929630e6a15f523b142b2897783b2f7a54532ac5ae578bd17a0b7f25a6ca2bd8\",\"dweb:/ipfs/QmTu9ffH9qbQncJGEc24bmnoCGjifQ7BG47AYR8AzMLfXR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9189eaba9e856cc4932ea29eeaf4e89a09448dde13860591691ec122856fdc75\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7d5991b906bba706373f5bfe3c2c8789a7a45360a41eee50574272b393c4ab70\",\"dweb:/ipfs/QmVCXVnYA13vMNxa7rGzNB129sUXiGE1asuHdnEMEPVZsp\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/libs/Int96SafeMath.sol\":{\"keccak256\":\"0xbd674ccbea4bc7c5cf1af19cf31fcd5261ac913f5909992c18b7832aef02721b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://c2e8c9ded61ea509eccca9a99dd3f4aaa3ef4132720056e4ce4086bce21f3b68\",\"dweb:/ipfs/QmfD9idja1rMjKF5XMCKeDfzG5KAMejuSmFATLVTUQb5nj\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0x5f50cec21a585dab7b59545aeb51735f36e3222e4b0768370be8d46373d0ef05\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://acdd57d81b5b2d346da335636baf1e37da3d31cf2eef58af493e43bc65a27414\",\"dweb:/ipfs/QmTepRBNAfRBXVDBM37ME1jpw1YgcseVehC17sWpEYeFDc\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xffec084e77ce3c0b595f0612687242f3d8b7a84cab15e5650c17428ee48d0b5b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://be0183816467872b053562d9a737042ac3a91ea67e3c74e03de5db7226f3e73b\",\"dweb:/ipfs/QmUyi4YXh1T7MExbrLwZ6rAdXTPChF8q27YpZxxniR6CHM\"]}},\"version\":1}",
902
+ "bytecode": "0x60a06040523480156200001157600080fd5b506040516200550f3803806200550f833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161547b620000946000396000610777015261547b6000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c806350d75d25116100f957806394229ecb11610097578063aabd266811610071578063aabd26681461042e578063b4b333c614610441578063e6a1e88814610454578063e8e7e2d11461046757600080fd5b806394229ecb146103ed5780639b2e48bc146104005780639cb28b72146102aa57600080fd5b806362fc305e116100d357806362fc305e1461038e5780637730599e146103a1578063811b3d40146103c75780638d997f6e146103da57600080fd5b806350d75d251461035357806352d1902d1461037357806354b770e31461037b57600080fd5b806326b0f536116101665780634b839e0b116101405780634b839e0b146102e05780634c8b181f146103035780634fe9c2911461031657806350209a621461034057600080fd5b806326b0f536146102aa578063354b9590146102b857806346951954146102cb57600080fd5b8062422bbe146101ad57806304aafa49146101e55780630602f7db146101ff578063062e56ec1461022557806309d256ef146102455780630f1ac49514610274575b600080fd5b6101c06101bb3660046146bd565b61047a565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b6101f164010000000081565b6040519081526020016101dc565b61021261020d366004614708565b6104b0565b604051600b9190910b81526020016101dc565b610238610233366004614776565b6104d1565b6040516101dc9190614837565b610258610253366004614708565b6104eb565b6040805160ff9093168352600b9190910b6020830152016101dc565b61028761028236600461484a565b61050f565b60408051948552600b9390930b60208501529183015260608201526080016101dc565b6101f160016001605f1b0381565b6102386102c6366004614895565b610545565b6102de6102d9366004614921565b61076c565b005b6102f36102ee36600461493e565b6107f0565b60405190151581526020016101dc565b61023861031136600461497f565b6108c7565b61032961032436600461484a565b6109e1565b6040805192151583526020830191909152016101dc565b61023861034e3660046149fb565b610ac3565b61035b610b96565b6040516001600160a01b0390911681526020016101dc565b6101f1610bc5565b610238610389366004614776565b610c29565b61023861039c3660046149fb565b610c41565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36101f1565b6102386103d5366004614a4b565b610cf4565b6101f16103e8366004614a8f565b610f7e565b6102386103fb366004614895565b611199565b61041361040e36600461493e565b611379565b604080519384526020840192909252908201526060016101dc565b61028761043c366004614708565b6113d3565b61023861044f36600461497f565b6113e5565b6102876104623660046146bd565b611479565b61021261047536600461484a565b6114b4565b600080600061048985856114ce565b925060006104978785611539565b8051602090910151959990985094965093945050505050565b6000806104bc846115fe565b5090506104c98184611779565b949350505050565b60606104e285856000808787610cf4565b95945050505050565b60008060006104fa8585611539565b80516020909101519097909650945050505050565b600080600080600061052187876117e8565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006105898885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036105f55760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f55504441544500000000000000000060448201526064015b60405180910390fd5b60008061060b8a6106068b8b611a65565b611a8d565b9150915060008060006106238d8d886060015161047a565b925092509250610634826001611ad4565b6106805760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f5550444154455f464c4f570000000000000060448201526064016105ec565b6000600b82900b60016001605f1b0314806106a557508a600b0b8560200151600b0b12155b6106c75760208501516106b8908c614ada565b6106c29083614ada565b6106c9565b815b9050600081600b0b12156106ef5760405162461bcd60e51b81526004016105ec90614b2a565b6106fb8e858584611b2f565b5050505061072960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b606082015261075d8183858a8a89611bb8565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e45760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016105ec565b6107ed81611d3d565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190614b6b565b505090506000811261087c5760019150506108c0565b600080610888876115fe565b91509150600061089888886117e8565b91505060006108aa8260400151611f4b565b90506108b885828686611fb9565b955050505050505b9392505050565b6060600061090b8785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061091e8888846060015161047a565b50915050600061092f826002611ad4565b90508061097e5760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f44454c4554455f464c4f570000000000000060448201526064016105ec565b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109d38183898988611ff6565b9a9950505050505050505050565b6000806000846001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190614ba4565b9050806001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac9190614bc1565b9150610ab98585846107f0565b9250509250929050565b60606000610b078785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610b3360408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610b7191611a65565b9050600080610b84846000015184611a8d565b9150915061075d8482848b8b8a611bb8565b6000610bc07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190614bc1565b60606104e28585600760016001605f1b038787610cf4565b60606000610c858785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610cb160408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610ce88186868561278d565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610d3b925087915061292d9050565b610d875760405162461bcd60e51b815260206004820152601860248201527f4346413a20556e636c65616e207065726d697373696f6e73000000000000000060448201526064016105ec565b6000610dc98885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b031603610e305760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f53454e4445525f464c4f575f4f50455241544f52000060448201526064016105ec565b600085600b0b1215610e845760405162461bcd60e51b815260206004820152601c60248201527f4346413a20455f4e4f5f4e454741544956455f414c4c4f57414e43450000000060448201526064016105ec565b6040805180820190915260ff87168152600b86900b60208201526060820151600090610eb0908a6114ce565b9050896001600160a01b031663a1b2bf8b82610ecb85612934565b6040518363ffffffff1660e01b8152600401610ee8929190614c15565b600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600080836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe39190614ba4565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110499190614ba4565b90506000816001600160a01b03166380f70cba84887feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161109d93929190614c2e565b602060405180830381865afa1580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614bc1565b90506000826001600160a01b03166380f70cba85897fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161113293929190614c2e565b602060405180830381865afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190614bc1565b9050602081901c63ffffffff1661118b8382896129aa565b955050505050505b92915050565b606060006111dd8885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036112445760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f43524541544500000000000000000060448201526064016105ec565b60008060006112588b8b866060015161047a565b925092509250611269826000611ad4565b6112b55760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f4f50455241544f525f4352454154455f464c4f57000060448201526064016105ec565b6000600b82900b60016001605f1b03146112d8576112d38983614ada565b6112da565b815b9050600081600b0b12156113005760405162461bcd60e51b81526004016105ec90614b2a565b61130c8c858584611b2f565b5050505061133a60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b606082015261136c8186868561278d565b9998505050505050505050565b600080600080600061138b88886117e8565b9150915081156113c8578060200151600b0b8160000151876113ad9190614c52565b6113b79190614c91565b945080604001519350806060015192505b505093509350939050565b60008060008060006105218787611a8d565b606060006114298785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061143c8888846060015161047a565b50915050600061144d826002611ad4565b90506109a360408051608081018252600080825260208201819052918101829052606081019190915290565b600080600080600061148f886106068989611a65565b805160208201516040830151606090930151919c909b50919950975095505050505050565b6000806114c184846117e8565b6020015195945050505050565b6000828260405160200161151b9291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c99190810190614d87565b90506115f1816000815181106115e1576115e1614e21565b602002602001015160001c612a7f565b92509250505b9250929050565b6000806000836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190614ba4565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cb9190614ba4565b90506000816001600160a01b03166380f70cba84887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161171f93929190614c2e565b602060405180830381865afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190614bc1565b63ffffffff602082901c81169891169650945050505050565b600060016001605f1b038211156117d25760405162461bcd60e51b815260206004820152601b60248201527f4346413a206465706f736974206e756d62657220746f6f20626967000000000060448201526064016105ec565b63ffffffff198216915060006104c98484614e4d565b60006117f26145f6565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611851573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118799190810190614d87565b90506115f18160008151811061189157611891614e21565b602002602001015160001c612ab7565b6118a9614621565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119159190614ba4565b6001600160a01b03161461195f5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016105ec565b604051632fd0a1cd60e21b8152339063bf42873490611982908590600401614837565b602060405180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c39190614e71565b6119fd5760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016105ec565b604051631fb6491d60e11b81523390633f6c923a90611a20908590600401614837565b600060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c09190810190614f13565b604080516001600160a01b03808516602083015283169181019190915260009060600161151b565b6000611a976145f6565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611834565b600080826002811115611ae957611ae961501a565b03611afa5750600182811614611193565b6001826002811115611b0e57611b0e61501a565b03611b215750600182811c811614611193565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611b6284612934565b6040518363ffffffff1660e01b8152600401611b7f929190614c15565b600060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050505050505050565b60606000611bc68884612b17565b91505085611c115760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f9190614e71565b15611cdb57611cd488604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612c8a9050565b9150611d26565b611d238860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506133a7915050565b91505b8751611d32908461347f565b509695505050505050565b6000611d677f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611dbd5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016105ec565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190614bc1565b611e27610bc5565b14611e805760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016105ec565b6001600160a01b0381163003611ed85760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016105ec565b611f00817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc611f29610bc5565b604080519182526001600160a01b03841660208301520160405180910390a150565b60006001600160ff1b03821115611fb55760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016105ec565b5090565b600080611fc68587615030565b90506000611fd48587615071565b9050611fe0848661509f565b611fea8284615071565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b03166120795760405162461bcd60e51b81526020600482015260136024820152724346413a2073656e646572206973207a65726f60681b60448201526064016105ec565b60408701516001600160a01b03166120cb5760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b6120dd87602001518860400151611a65565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a0808601519084015288519091829161213391611a8d565b915091508161217f5760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc926121cb926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190614b6b565b5050905089602001516001600160a01b031686606001516001600160a01b031614158015612254575089604001516001600160a01b031686606001516001600160a01b031614155b801561225e575088155b156123aa5760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156122ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d19190614e71565b158015612349575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa158015612323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123479190614e71565b155b156123aa57600081126123aa5760405162461bcd60e51b815260206004820152602360248201527f4346413a2073656e646572206163636f756e74206973206e6f7420637269746960448201526218d85b60ea1b60648201526084016105ec565b60008112156123c8576123c88a600001518286858a60600151613596565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036124be5760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190614e71565b156124af576124a88a604001518b600001518685898b6002612c8a565b9450612780565b89516124a8908584888a6133a7565b89604001516001600160a01b031686606001516001600160a01b0316036125f25760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614e71565b1561256a576124a88a602001518b600001518685898b6002612c8a565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190614e71565b156124af576124a860008b600001518685898b6002612c8a565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190614e71565b801561266c5750600081125b156126e65760208a0151604051635b92108f60e11b8152339163b724211e9161269c918991600b906004016150b6565b6000604051808303816000875af11580156126bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126e391908101906150e4565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614e71565b15612771576124a88a604001518b600001518685898b6002612c8a565b89516109d3908584888a6133a7565b5050505095945050505050565b606060008061279c8785612b17565b915091506000806127b1896000015185611a8d565b9150915081156128035760405162461bcd60e51b815260206004820152601760248201527f4346413a20666c6f7720616c726561647920657869737400000000000000000060448201526064016105ec565b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561284d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128719190614e71565b156128ca576128c389604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612c8a9050565b9450612915565b612912896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92506133a7915050565b94505b8851612921908761347f565b50505050949350505050565b60f8161590565b606060008260200151600b0b121561294e5761294e615119565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b8160008151811061299957612999614e21565b602002602001018181525050919050565b60008082600b0b13612a0a5760405162461bcd60e51b815260206004820152602360248201527f4346413a206e6f7420666f72206e6f6e2d706f73697469766520666c6f77207260448201526261746560e81b60648201526084016105ec565b60016001605f1b03612a2084600b85900b61512f565b1115612a675760405162461bcd60e51b81526020600482015260166024820152754346413a20666c6f77207261746520746f6f2062696760501b60448201526064016105ec565b6000612a7383856137a2565b90506104e28582613821565b6040805180820190915260008082526020820152811580159190612ab257600b83900b6020820152608083901c60ff1681525b915091565b6000612ac16145f6565b821580159250612ab25760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612b995760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b612bab84602001518560400151611a65565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612c3a5760405162461bcd60e51b81526020600482015260116024820152704346413a206e6f2073656c6620666c6f7760781b60448201526064016105ec565b60008160800151600b0b136115f75760405162461bcd60e51b81526020600482015260166024820152754346413a20696e76616c696420666c6f77207261746560501b60448201526064016105ec565b82612c9361467c565b6001600160a01b03891615612e7c576000612d28898b8a600001518b602001518c60400151604051602001612cde9291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612d3e57612d3e61501a565b03612d535764010000000060c0820152612d88565b6001846002811115612d6757612d6761501a565b03612d7c5764040000000060c0820152612d88565b64100000000060c08201525b612d928187613837565b82526040850151610140860151612dac91908b8b8b6139ee565b506080830152508451612dc090600161514e565b60ff168160800151612dd2919061512f565b60808201526060870151612de590611f4b565b60a08201526000846002811115612dfe57612dfe61501a565b03612e135764020000000060c0820152612e48565b6001846002811115612e2757612e2761501a565b03612e3c5764080000000060c0820152612e48565b64200000000060c08201525b612e5781836000015185613e40565b60408401919091528851909350612e6f908a90611a8d565b602084015250612e9a9050565b612e9284604001518561014001518a8a8a6139ee565b602084015250505b6000816040015161010001511315612ed957612ece612ec9612ec4836040015161010001516140a9565b6140fb565b611f4b565b604082015161010001525b6000612ee88760600151611f4b565b82604001516101000151612efc9190614c52565b9050612f2281612f13846020015160400151611f4b565b612f1d9190615030565b6140a9565b82602001516040018181525050612f4481612f13846020015160600151611f4b565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b91612f6f9061412f565b6040518363ffffffff1660e01b8152600401612f8c929190614c15565b600060405180830381600087803b158015612fa657600080fd5b505af1158015612fba573d6000803e3d6000fd5b50505050612fd689896020015160008460008a604001516141a0565b50612fee898960400151600080858a604001516141a0565b506101408501516001600160a01b031615806130205750886001600160a01b03168561014001516001600160a01b0316145b1561309e57602082015160409081015190516303c9790560e11b81523391630792f20a916130549187918690600401615173565b6000604051808303816000875af1158015613073573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261309b91908101906150e4565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190614e71565b1561339a57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa15801561316c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131909190614b6b565b509091505060008112156133985760028560028111156131b2576131b261501a565b0361333d576040808a01519051635b92108f60e11b8152339163b724211e916131e2918891600c906004016150b6565b6000604051808303816000875af1158015613201573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261322991908101906150e4565b9350600061325161323983615198565b61324c600061324787615198565b614346565b614355565b90508a6001600160a01b031663cf97256d8b602001518361327190615198565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156132b757600080fd5b505af11580156132cb573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561331f57600080fd5b505af1158015613333573d6000803e3d6000fd5b5050505050613398565b60405162461bcd60e51b815260206004820152602a60248201527f4346413a204150505f52554c455f4e4f5f435249544943414c5f524543454956604482015269115497d050d0d3d5539560b21b60648201526084016105ec565b505b5050979650505050505050565b606083810151156133ba576133ba615119565b60006133c46145f6565b6133da84604001518561014001518a8a8a6139ee565b6101408701519294509250506001600160a01b03808a169116036134705760408082015190516303c9790560e11b81523391630792f20a916134229189918790600401615173565b6000604051808303816000875af1158015613441573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346991908101906150e4565b9250613474565b8492505b505095945050505050565b602081015160ff1660031415806134ad5750816001600160a01b03168161014001516001600160a01b031614155b156135925760608101516040808301519051633acd4df360e21b81526001600160a01b039283166004820152602481019190915260009184169063eb3537cc90604401606060405180830381865afa15801561350d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135319190614b6b565b5050905060008112156135905760405162461bcd60e51b815260206004820152602160248201527f4346413a206e6f7420656e6f75676820617661696c61626c652062616c616e636044820152606560f81b60648201526084016105ec565b505b5050565b60006135a68685602001516117e8565b91505060006135b88460400151611f4b565b905060006135c98360400151611f4b565b905060606000806135da848b615030565b90506000806135e88d6115fe565b915091506135f88c878484611fb9565b93505050600081126136e3576000846136118388614c91565b61361b9190615071565b905060018361362b57600161362e565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f6020015161367d886140a9565b61368989600019614c91565b6040518863ffffffff1660e01b81526004016136ab97969594939291906151b4565b600060405180830381600087803b1580156136c557600080fd5b505af11580156136d9573d6000803e3d6000fd5b5050505050613795565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f60200151613733886140a9565b61373f8a600019614c91565b6040518863ffffffff1660e01b815260040161376197969594939291906151b4565b600060405180830381600087803b15801561377b57600080fd5b505af115801561378f573d6000803e3d6000fd5b50505050505b5050505050505050505050565b600082600b0b6000036137b757506000611193565b60016001605f1b038211156137ce576137ce615119565b61381382604051806040016040528060158152602001744346413a206465706f736974206f766572666c6f7760581b81525085600b0b61436a9092919063ffffffff16565b600b0b90506108c0816140fb565b600081831161383057816108c0565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa15801561388b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138af9190615201565b919450925090508280156138c1575081155b156139e55760006138d28688614402565b90508660c0015182166000036139d75760006138f18860c00151614480565b88516040808b015160608c01518251600081526020810190935261391d9392309291906044810161523d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e029261398c9291869164100000000091909114908890600401615282565b6000604051808303816000875af11580156139ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139d391908101906150e4565b9550505b6139e2866000614517565b50505b50505092915050565b6000806139f96145f6565b6000806000613a07896115fe565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6e9190614ba4565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613ac19033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614c2e565b602060405180830381865afa158015613ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b029190614bc1565b9250613b128960800151836137a2565b95505050613b238660600151611f4b565b613b308760400151611f4b565b613b3986611f4b565b613b439190614c52565b613b4d9190615030565b9450613b6085612f138860400151611f4b565b91508082108015613b78575060008760800151600b0b135b15613bba57613b8a8660600151611f4b565b613b978760400151611f4b565b613ba083611f4b565b613baa9190614c52565b613bb49190615030565b94508091505b6001600160a01b03891615801590613be45750876001600160a01b0316896001600160a01b031614155b15613bee57600093505b604051806080016040528060008960800151600b0b13613c0f576000613c11565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613c508661412f565b6040518363ffffffff1660e01b8152600401613c6d929190614c15565b600060405180830381600087803b158015613c8757600080fd5b505af1158015613c9b573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613cbb915050565b613d1b888860200151613d128a60800151604051806040016040528060168152602001754346413a20666c6f7772617465206f766572666c6f7760501b8152508b60200151600b0b61453f9092919063ffffffff16565b8860008f6141a0565b600b90810b82526040808901516020808a0151835180850190945260168452754346413a20666c6f7772617465206f766572666c6f7760501b9184019190915260808b0151613d7e948d94613d75939290910b919061453f565b6000808f6141a0565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613de49493929091906152cb565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613e2b91815260200190565b60405180910390a25050955095509592505050565b613e48614621565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec09190615201565b88965091945092509050828015613ed5575081155b1561409e57613ee48489614402565b93508760c00151811660000361408c576000613f038960c00151614480565b89516040808c015160608d015182516000815260208101909352613f319392309291908e9060448101615303565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a8492613fa09291869164200000000091909114908b90600401615282565b6000604051808303816000875af1158015613fbf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fe791908101906150e4565b604051631fb6491d60e11b81529095503390633f6c923a9061400d908890600401614837565b600060405180830381865afa15801561402a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140529190810190614f13565b955061408460006132476140698c60800151611f4b565b61324c6140798b60e00151611f4b565b8b6101000151614346565b610100870152505b61409b86866101000151614517565b93505b505050935093915050565b600080821215611fb55760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016105ec565b60008063ffffffff8316614110576000614113565b60015b60ff16905060206141268285831c61535c565b901b9392505050565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b8160008151811061299957612999614e21565b6000806141ad88886117e8565b91505060008160200151600b0b6141cd836000015186612ec9919061509f565b6141d79190614c91565b905080156142425760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561422957600080fd5b505af115801561423d573d6000803e3d6000fd5b505050505b61428c87604051806040016040528060168152602001754346413a20666c6f7772617465206f766572666c6f7760501b8152508460200151600b0b61459b9092919063ffffffff16565b600b0b602083015283825260408201516142ab908790612f1390611f4b565b604083015260608201516142c4908690612f1390611f4b565b60608301526001600160a01b03891663090c415e8960006142e48661412f565b6040518463ffffffff1660e01b815260040161430293929190615374565b600060405180830381600087803b15801561431c57600080fd5b505af1158015614330573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b600081831361383057816108c0565b600081831361436457826108c0565b50919050565b600083600b0b60000361437f575060006108c0565b83600b0b6000191480156143a35750600b83900b6b7fffffffffffffffffffffff19145b1582906143c35760405162461bcd60e51b81526004016105ec9190614837565b50838302600b84900b6143d6868361539b565b600b0b1483906143f95760405162461bcd60e51b81526004016105ec9190614837565b50949350505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614439948a946004016153de565b6000604051808303816000875af1158015614458573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c091908101906150e4565b6000640100000000820361449c57506330d9c91560e01b919050565b64040000000082036144b65750630221347d60e61b919050565b64100000000082036144d05750635f9e7d7760e01b919050565b64020000000082036144ea575063d86ed3e560e01b919050565b6408000000008203614504575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906144399086908690600401615423565b6000828403600b84900b821380159061455e575084600b0b81600b0b13155b8061457c5750600084600b0b12801561457c575084600b0b81600b0b135b83906143f95760405162461bcd60e51b81526004016105ec9190614837565b6000838301600b84900b82138015906145ba575084600b0b81600b0b12155b8061457c5750600084600b0b12801561457c575084600b0b81600b0b1283906143f95760405162461bcd60e51b81526004016105ec9190614837565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016146966145f6565b81526020016146a3614621565b905290565b6001600160a01b03811681146107ed57600080fd5b6000806000606084860312156146d257600080fd5b83356146dd816146a8565b925060208401356146ed816146a8565b915060408401356146fd816146a8565b809150509250925092565b6000806040838503121561471b57600080fd5b8235614726816146a8565b946020939093013593505050565b60008083601f84011261474657600080fd5b50813567ffffffffffffffff81111561475e57600080fd5b6020830191508360208285010111156115f757600080fd5b6000806000806060858703121561478c57600080fd5b8435614797816146a8565b935060208501356147a7816146a8565b9250604085013567ffffffffffffffff8111156147c357600080fd5b6147cf87828801614734565b95989497509550505050565b60005b838110156147f65781810151838201526020016147de565b83811115614805576000848401525b50505050565b600081518084526148238160208601602086016147db565b601f01601f19169290920160200192915050565b6020815260006108c0602083018461480b565b6000806040838503121561485d57600080fd5b8235614868816146a8565b91506020830135614878816146a8565b809150509250929050565b8035600b81900b811461451257600080fd5b60008060008060008060a087890312156148ae57600080fd5b86356148b9816146a8565b955060208701356148c9816146a8565b945060408701356148d9816146a8565b93506148e760608801614883565b9250608087013567ffffffffffffffff81111561490357600080fd5b61490f89828a01614734565b979a9699509497509295939492505050565b60006020828403121561493357600080fd5b81356108c0816146a8565b60008060006060848603121561495357600080fd5b833561495e816146a8565b9250602084013561496e816146a8565b929592945050506040919091013590565b60008060008060006080868803121561499757600080fd5b85356149a2816146a8565b945060208601356149b2816146a8565b935060408601356149c2816146a8565b9250606086013567ffffffffffffffff8111156149de57600080fd5b6149ea88828901614734565b969995985093965092949392505050565b600080600080600060808688031215614a1357600080fd5b8535614a1e816146a8565b94506020860135614a2e816146a8565b93506149c260408701614883565b60ff811681146107ed57600080fd5b60008060008060008060a08789031215614a6457600080fd5b8635614a6f816146a8565b95506020870135614a7f816146a8565b945060408701356148d981614a3c565b60008060408385031215614aa257600080fd5b8235614aad816146a8565b9150614abb60208401614883565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600081600b0b83600b0b600081128160016001605f1b031901831281151615614b0557614b05614ac4565b8160016001605f1b03018313811615614b2057614b20614ac4565b5090039392505050565b60208082526021908201527f4346413a20455f4558434545445f464c4f575f524154455f414c4c4f57414e436040820152604560f81b606082015260800190565b600080600060608486031215614b8057600080fd5b8351925060208401519150604084015190509250925092565b8051614512816146a8565b600060208284031215614bb657600080fd5b81516108c0816146a8565b600060208284031215614bd357600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614c0a57815187529582019590820190600101614bee565b509495945050505050565b8281526040602082015260006104c96040830184614bda565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008083128015600160ff1b850184121615614c7057614c70614ac4565b6001600160ff1b0384018313811615614c8b57614c8b614ac4565b50500390565b60006001600160ff1b0381841382841380821686840486111615614cb757614cb7614ac4565b600160ff1b6000871282811687830589121615614cd657614cd6614ac4565b60008712925087820587128484161615614cf257614cf2614ac4565b87850587128184161615614d0857614d08614ac4565b505050929093029392505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614d5057614d50614d16565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614d7f57614d7f614d16565b604052919050565b60006020808385031215614d9a57600080fd5b825167ffffffffffffffff80821115614db257600080fd5b818501915085601f830112614dc657600080fd5b815181811115614dd857614dd8614d16565b8060051b9150614de9848301614d56565b8181529183018401918481019088841115614e0357600080fd5b938501935b83851015610ce857845182529385019390850190614e08565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614e5c57614e5c614e37565b500490565b8051801515811461451257600080fd5b600060208284031215614e8357600080fd5b6108c082614e61565b805161451281614a3c565b80516001600160e01b03198116811461451257600080fd5b600082601f830112614ec057600080fd5b815167ffffffffffffffff811115614eda57614eda614d16565b614eed601f8201601f1916602001614d56565b818152846020838601011115614f0257600080fd5b6104c98260208301602087016147db565b600060208284031215614f2557600080fd5b815167ffffffffffffffff80821115614f3d57600080fd5b908301906101608286031215614f5257600080fd5b614f5a614d2c565b614f6383614e8c565b8152614f7160208401614e8c565b602082015260408301516040820152614f8c60608401614b99565b6060820152614f9d60808401614e97565b608082015260a083015182811115614fb457600080fd5b614fc087828601614eaf565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150614ff7828401614b99565b82820152610140915061500b828401614b99565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600080821280156001600160ff1b038490038513161561505257615052614ac4565b600160ff1b839003841281161561506b5761506b614ac4565b50500190565b60008261508057615080614e37565b600160ff1b82146000198414161561509a5761509a614ac4565b500590565b6000828210156150b1576150b1614ac4565b500390565b6060815260006150c9606083018661480b565b6001600160a01b039490941660208301525060400152919050565b6000602082840312156150f657600080fd5b815167ffffffffffffffff81111561510d57600080fd5b6104c984828501614eaf565b634e487b7160e01b600052600160045260246000fd5b600081600019048311821515161561514957615149614ac4565b500290565b600060ff821660ff84168060ff0382111561516b5761516b614ac4565b019392505050565b606081526000615186606083018661480b565b60208301949094525060400152919050565b6000600160ff1b82016151ad576151ad614ac4565b5060000390565b87815260e0602082015260006151cd60e083018961480b565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b60008060006060848603121561521657600080fd5b61521f84614e61565b925061522d60208501614e61565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152709083018561480b565b8281036080840152610ce8818561480b565b6001600160a01b03851681526080602082018190526000906152a69083018661480b565b841515604084015282810360608401526152c0818561480b565b979650505050505050565b84600b0b815283600b0b602082015282600b0b60408201526080606082015260006152f9608083018461480b565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906153369083018661480b565b8281036080840152615348818661480b565b905082810360a084015261136c818561480b565b6000821982111561536f5761536f614ac4565b500190565b60018060a01b03841681528260208201526060604082015260006104e26060830184614bda565b600081600b0b83600b0b806153b2576153b2614e37565b6b7fffffffffffffffffffffff198214600019821416156153d5576153d5614ac4565b90059392505050565b60a0815260006153f160a083018861480b565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b604081526000615436604083018561480b565b9050826020830152939250505056fea2646970667358221220679914ce9f0a7c8f58431f872c89eddff315ff89480cf97f7fa16f98d510374664736f6c634300080d0033",
903
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a85760003560e01c806350d75d25116100f957806394229ecb11610097578063aabd266811610071578063aabd26681461042e578063b4b333c614610441578063e6a1e88814610454578063e8e7e2d11461046757600080fd5b806394229ecb146103ed5780639b2e48bc146104005780639cb28b72146102aa57600080fd5b806362fc305e116100d357806362fc305e1461038e5780637730599e146103a1578063811b3d40146103c75780638d997f6e146103da57600080fd5b806350d75d251461035357806352d1902d1461037357806354b770e31461037b57600080fd5b806326b0f536116101665780634b839e0b116101405780634b839e0b146102e05780634c8b181f146103035780634fe9c2911461031657806350209a621461034057600080fd5b806326b0f536146102aa578063354b9590146102b857806346951954146102cb57600080fd5b8062422bbe146101ad57806304aafa49146101e55780630602f7db146101ff578063062e56ec1461022557806309d256ef146102455780630f1ac49514610274575b600080fd5b6101c06101bb3660046146bd565b61047a565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b6101f164010000000081565b6040519081526020016101dc565b61021261020d366004614708565b6104b0565b604051600b9190910b81526020016101dc565b610238610233366004614776565b6104d1565b6040516101dc9190614837565b610258610253366004614708565b6104eb565b6040805160ff9093168352600b9190910b6020830152016101dc565b61028761028236600461484a565b61050f565b60408051948552600b9390930b60208501529183015260608201526080016101dc565b6101f160016001605f1b0381565b6102386102c6366004614895565b610545565b6102de6102d9366004614921565b61076c565b005b6102f36102ee36600461493e565b6107f0565b60405190151581526020016101dc565b61023861031136600461497f565b6108c7565b61032961032436600461484a565b6109e1565b6040805192151583526020830191909152016101dc565b61023861034e3660046149fb565b610ac3565b61035b610b96565b6040516001600160a01b0390911681526020016101dc565b6101f1610bc5565b610238610389366004614776565b610c29565b61023861039c3660046149fb565b610c41565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36101f1565b6102386103d5366004614a4b565b610cf4565b6101f16103e8366004614a8f565b610f7e565b6102386103fb366004614895565b611199565b61041361040e36600461493e565b611379565b604080519384526020840192909252908201526060016101dc565b61028761043c366004614708565b6113d3565b61023861044f36600461497f565b6113e5565b6102876104623660046146bd565b611479565b61021261047536600461484a565b6114b4565b600080600061048985856114ce565b925060006104978785611539565b8051602090910151959990985094965093945050505050565b6000806104bc846115fe565b5090506104c98184611779565b949350505050565b60606104e285856000808787610cf4565b95945050505050565b60008060006104fa8585611539565b80516020909101519097909650945050505050565b600080600080600061052187876117e8565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006105898885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036105f55760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f55504441544500000000000000000060448201526064015b60405180910390fd5b60008061060b8a6106068b8b611a65565b611a8d565b9150915060008060006106238d8d886060015161047a565b925092509250610634826001611ad4565b6106805760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f5550444154455f464c4f570000000000000060448201526064016105ec565b6000600b82900b60016001605f1b0314806106a557508a600b0b8560200151600b0b12155b6106c75760208501516106b8908c614ada565b6106c29083614ada565b6106c9565b815b9050600081600b0b12156106ef5760405162461bcd60e51b81526004016105ec90614b2a565b6106fb8e858584611b2f565b5050505061072960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b606082015261075d8183858a8a89611bb8565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e45760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016105ec565b6107ed81611d3d565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190614b6b565b505090506000811261087c5760019150506108c0565b600080610888876115fe565b91509150600061089888886117e8565b91505060006108aa8260400151611f4b565b90506108b885828686611fb9565b955050505050505b9392505050565b6060600061090b8785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061091e8888846060015161047a565b50915050600061092f826002611ad4565b90508061097e5760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f44454c4554455f464c4f570000000000000060448201526064016105ec565b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109d38183898988611ff6565b9a9950505050505050505050565b6000806000846001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190614ba4565b9050806001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac9190614bc1565b9150610ab98585846107f0565b9250509250929050565b60606000610b078785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610b3360408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610b7191611a65565b9050600080610b84846000015184611a8d565b9150915061075d8482848b8b8a611bb8565b6000610bc07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190614bc1565b60606104e28585600760016001605f1b038787610cf4565b60606000610c858785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610cb160408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610ce88186868561278d565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610d3b925087915061292d9050565b610d875760405162461bcd60e51b815260206004820152601860248201527f4346413a20556e636c65616e207065726d697373696f6e73000000000000000060448201526064016105ec565b6000610dc98885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b031603610e305760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f53454e4445525f464c4f575f4f50455241544f52000060448201526064016105ec565b600085600b0b1215610e845760405162461bcd60e51b815260206004820152601c60248201527f4346413a20455f4e4f5f4e454741544956455f414c4c4f57414e43450000000060448201526064016105ec565b6040805180820190915260ff87168152600b86900b60208201526060820151600090610eb0908a6114ce565b9050896001600160a01b031663a1b2bf8b82610ecb85612934565b6040518363ffffffff1660e01b8152600401610ee8929190614c15565b600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600080836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe39190614ba4565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110499190614ba4565b90506000816001600160a01b03166380f70cba84887feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161109d93929190614c2e565b602060405180830381865afa1580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614bc1565b90506000826001600160a01b03166380f70cba85897fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161113293929190614c2e565b602060405180830381865afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190614bc1565b9050602081901c63ffffffff1661118b8382896129aa565b955050505050505b92915050565b606060006111dd8885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036112445760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f43524541544500000000000000000060448201526064016105ec565b60008060006112588b8b866060015161047a565b925092509250611269826000611ad4565b6112b55760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f4f50455241544f525f4352454154455f464c4f57000060448201526064016105ec565b6000600b82900b60016001605f1b03146112d8576112d38983614ada565b6112da565b815b9050600081600b0b12156113005760405162461bcd60e51b81526004016105ec90614b2a565b61130c8c858584611b2f565b5050505061133a60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b606082015261136c8186868561278d565b9998505050505050505050565b600080600080600061138b88886117e8565b9150915081156113c8578060200151600b0b8160000151876113ad9190614c52565b6113b79190614c91565b945080604001519350806060015192505b505093509350939050565b60008060008060006105218787611a8d565b606060006114298785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061143c8888846060015161047a565b50915050600061144d826002611ad4565b90506109a360408051608081018252600080825260208201819052918101829052606081019190915290565b600080600080600061148f886106068989611a65565b805160208201516040830151606090930151919c909b50919950975095505050505050565b6000806114c184846117e8565b6020015195945050505050565b6000828260405160200161151b9291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c99190810190614d87565b90506115f1816000815181106115e1576115e1614e21565b602002602001015160001c612a7f565b92509250505b9250929050565b6000806000836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190614ba4565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cb9190614ba4565b90506000816001600160a01b03166380f70cba84887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161171f93929190614c2e565b602060405180830381865afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190614bc1565b63ffffffff602082901c81169891169650945050505050565b600060016001605f1b038211156117d25760405162461bcd60e51b815260206004820152601b60248201527f4346413a206465706f736974206e756d62657220746f6f20626967000000000060448201526064016105ec565b63ffffffff198216915060006104c98484614e4d565b60006117f26145f6565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611851573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118799190810190614d87565b90506115f18160008151811061189157611891614e21565b602002602001015160001c612ab7565b6118a9614621565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119159190614ba4565b6001600160a01b03161461195f5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016105ec565b604051632fd0a1cd60e21b8152339063bf42873490611982908590600401614837565b602060405180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c39190614e71565b6119fd5760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016105ec565b604051631fb6491d60e11b81523390633f6c923a90611a20908590600401614837565b600060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c09190810190614f13565b604080516001600160a01b03808516602083015283169181019190915260009060600161151b565b6000611a976145f6565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611834565b600080826002811115611ae957611ae961501a565b03611afa5750600182811614611193565b6001826002811115611b0e57611b0e61501a565b03611b215750600182811c811614611193565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611b6284612934565b6040518363ffffffff1660e01b8152600401611b7f929190614c15565b600060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050505050505050565b60606000611bc68884612b17565b91505085611c115760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f9190614e71565b15611cdb57611cd488604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612c8a9050565b9150611d26565b611d238860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506133a7915050565b91505b8751611d32908461347f565b509695505050505050565b6000611d677f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611dbd5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016105ec565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190614bc1565b611e27610bc5565b14611e805760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016105ec565b6001600160a01b0381163003611ed85760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016105ec565b611f00817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc611f29610bc5565b604080519182526001600160a01b03841660208301520160405180910390a150565b60006001600160ff1b03821115611fb55760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016105ec565b5090565b600080611fc68587615030565b90506000611fd48587615071565b9050611fe0848661509f565b611fea8284615071565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b03166120795760405162461bcd60e51b81526020600482015260136024820152724346413a2073656e646572206973207a65726f60681b60448201526064016105ec565b60408701516001600160a01b03166120cb5760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b6120dd87602001518860400151611a65565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a0808601519084015288519091829161213391611a8d565b915091508161217f5760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc926121cb926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190614b6b565b5050905089602001516001600160a01b031686606001516001600160a01b031614158015612254575089604001516001600160a01b031686606001516001600160a01b031614155b801561225e575088155b156123aa5760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156122ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d19190614e71565b158015612349575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa158015612323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123479190614e71565b155b156123aa57600081126123aa5760405162461bcd60e51b815260206004820152602360248201527f4346413a2073656e646572206163636f756e74206973206e6f7420637269746960448201526218d85b60ea1b60648201526084016105ec565b60008112156123c8576123c88a600001518286858a60600151613596565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036124be5760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190614e71565b156124af576124a88a604001518b600001518685898b6002612c8a565b9450612780565b89516124a8908584888a6133a7565b89604001516001600160a01b031686606001516001600160a01b0316036125f25760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614e71565b1561256a576124a88a602001518b600001518685898b6002612c8a565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190614e71565b156124af576124a860008b600001518685898b6002612c8a565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190614e71565b801561266c5750600081125b156126e65760208a0151604051635b92108f60e11b8152339163b724211e9161269c918991600b906004016150b6565b6000604051808303816000875af11580156126bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126e391908101906150e4565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614e71565b15612771576124a88a604001518b600001518685898b6002612c8a565b89516109d3908584888a6133a7565b5050505095945050505050565b606060008061279c8785612b17565b915091506000806127b1896000015185611a8d565b9150915081156128035760405162461bcd60e51b815260206004820152601760248201527f4346413a20666c6f7720616c726561647920657869737400000000000000000060448201526064016105ec565b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561284d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128719190614e71565b156128ca576128c389604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612c8a9050565b9450612915565b612912896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92506133a7915050565b94505b8851612921908761347f565b50505050949350505050565b60f8161590565b606060008260200151600b0b121561294e5761294e615119565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b8160008151811061299957612999614e21565b602002602001018181525050919050565b60008082600b0b13612a0a5760405162461bcd60e51b815260206004820152602360248201527f4346413a206e6f7420666f72206e6f6e2d706f73697469766520666c6f77207260448201526261746560e81b60648201526084016105ec565b60016001605f1b03612a2084600b85900b61512f565b1115612a675760405162461bcd60e51b81526020600482015260166024820152754346413a20666c6f77207261746520746f6f2062696760501b60448201526064016105ec565b6000612a7383856137a2565b90506104e28582613821565b6040805180820190915260008082526020820152811580159190612ab257600b83900b6020820152608083901c60ff1681525b915091565b6000612ac16145f6565b821580159250612ab25760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612b995760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b612bab84602001518560400151611a65565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612c3a5760405162461bcd60e51b81526020600482015260116024820152704346413a206e6f2073656c6620666c6f7760781b60448201526064016105ec565b60008160800151600b0b136115f75760405162461bcd60e51b81526020600482015260166024820152754346413a20696e76616c696420666c6f77207261746560501b60448201526064016105ec565b82612c9361467c565b6001600160a01b03891615612e7c576000612d28898b8a600001518b602001518c60400151604051602001612cde9291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612d3e57612d3e61501a565b03612d535764010000000060c0820152612d88565b6001846002811115612d6757612d6761501a565b03612d7c5764040000000060c0820152612d88565b64100000000060c08201525b612d928187613837565b82526040850151610140860151612dac91908b8b8b6139ee565b506080830152508451612dc090600161514e565b60ff168160800151612dd2919061512f565b60808201526060870151612de590611f4b565b60a08201526000846002811115612dfe57612dfe61501a565b03612e135764020000000060c0820152612e48565b6001846002811115612e2757612e2761501a565b03612e3c5764080000000060c0820152612e48565b64200000000060c08201525b612e5781836000015185613e40565b60408401919091528851909350612e6f908a90611a8d565b602084015250612e9a9050565b612e9284604001518561014001518a8a8a6139ee565b602084015250505b6000816040015161010001511315612ed957612ece612ec9612ec4836040015161010001516140a9565b6140fb565b611f4b565b604082015161010001525b6000612ee88760600151611f4b565b82604001516101000151612efc9190614c52565b9050612f2281612f13846020015160400151611f4b565b612f1d9190615030565b6140a9565b82602001516040018181525050612f4481612f13846020015160600151611f4b565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b91612f6f9061412f565b6040518363ffffffff1660e01b8152600401612f8c929190614c15565b600060405180830381600087803b158015612fa657600080fd5b505af1158015612fba573d6000803e3d6000fd5b50505050612fd689896020015160008460008a604001516141a0565b50612fee898960400151600080858a604001516141a0565b506101408501516001600160a01b031615806130205750886001600160a01b03168561014001516001600160a01b0316145b1561309e57602082015160409081015190516303c9790560e11b81523391630792f20a916130549187918690600401615173565b6000604051808303816000875af1158015613073573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261309b91908101906150e4565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190614e71565b1561339a57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa15801561316c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131909190614b6b565b509091505060008112156133985760028560028111156131b2576131b261501a565b0361333d576040808a01519051635b92108f60e11b8152339163b724211e916131e2918891600c906004016150b6565b6000604051808303816000875af1158015613201573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261322991908101906150e4565b9350600061325161323983615198565b61324c600061324787615198565b614346565b614355565b90508a6001600160a01b031663cf97256d8b602001518361327190615198565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156132b757600080fd5b505af11580156132cb573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561331f57600080fd5b505af1158015613333573d6000803e3d6000fd5b5050505050613398565b60405162461bcd60e51b815260206004820152602a60248201527f4346413a204150505f52554c455f4e4f5f435249544943414c5f524543454956604482015269115497d050d0d3d5539560b21b60648201526084016105ec565b505b5050979650505050505050565b606083810151156133ba576133ba615119565b60006133c46145f6565b6133da84604001518561014001518a8a8a6139ee565b6101408701519294509250506001600160a01b03808a169116036134705760408082015190516303c9790560e11b81523391630792f20a916134229189918790600401615173565b6000604051808303816000875af1158015613441573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346991908101906150e4565b9250613474565b8492505b505095945050505050565b602081015160ff1660031415806134ad5750816001600160a01b03168161014001516001600160a01b031614155b156135925760608101516040808301519051633acd4df360e21b81526001600160a01b039283166004820152602481019190915260009184169063eb3537cc90604401606060405180830381865afa15801561350d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135319190614b6b565b5050905060008112156135905760405162461bcd60e51b815260206004820152602160248201527f4346413a206e6f7420656e6f75676820617661696c61626c652062616c616e636044820152606560f81b60648201526084016105ec565b505b5050565b60006135a68685602001516117e8565b91505060006135b88460400151611f4b565b905060006135c98360400151611f4b565b905060606000806135da848b615030565b90506000806135e88d6115fe565b915091506135f88c878484611fb9565b93505050600081126136e3576000846136118388614c91565b61361b9190615071565b905060018361362b57600161362e565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f6020015161367d886140a9565b61368989600019614c91565b6040518863ffffffff1660e01b81526004016136ab97969594939291906151b4565b600060405180830381600087803b1580156136c557600080fd5b505af11580156136d9573d6000803e3d6000fd5b5050505050613795565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f60200151613733886140a9565b61373f8a600019614c91565b6040518863ffffffff1660e01b815260040161376197969594939291906151b4565b600060405180830381600087803b15801561377b57600080fd5b505af115801561378f573d6000803e3d6000fd5b50505050505b5050505050505050505050565b600082600b0b6000036137b757506000611193565b60016001605f1b038211156137ce576137ce615119565b61381382604051806040016040528060158152602001744346413a206465706f736974206f766572666c6f7760581b81525085600b0b61436a9092919063ffffffff16565b600b0b90506108c0816140fb565b600081831161383057816108c0565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa15801561388b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138af9190615201565b919450925090508280156138c1575081155b156139e55760006138d28688614402565b90508660c0015182166000036139d75760006138f18860c00151614480565b88516040808b015160608c01518251600081526020810190935261391d9392309291906044810161523d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e029261398c9291869164100000000091909114908890600401615282565b6000604051808303816000875af11580156139ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139d391908101906150e4565b9550505b6139e2866000614517565b50505b50505092915050565b6000806139f96145f6565b6000806000613a07896115fe565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6e9190614ba4565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613ac19033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614c2e565b602060405180830381865afa158015613ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b029190614bc1565b9250613b128960800151836137a2565b95505050613b238660600151611f4b565b613b308760400151611f4b565b613b3986611f4b565b613b439190614c52565b613b4d9190615030565b9450613b6085612f138860400151611f4b565b91508082108015613b78575060008760800151600b0b135b15613bba57613b8a8660600151611f4b565b613b978760400151611f4b565b613ba083611f4b565b613baa9190614c52565b613bb49190615030565b94508091505b6001600160a01b03891615801590613be45750876001600160a01b0316896001600160a01b031614155b15613bee57600093505b604051806080016040528060008960800151600b0b13613c0f576000613c11565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613c508661412f565b6040518363ffffffff1660e01b8152600401613c6d929190614c15565b600060405180830381600087803b158015613c8757600080fd5b505af1158015613c9b573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613cbb915050565b613d1b888860200151613d128a60800151604051806040016040528060168152602001754346413a20666c6f7772617465206f766572666c6f7760501b8152508b60200151600b0b61453f9092919063ffffffff16565b8860008f6141a0565b600b90810b82526040808901516020808a0151835180850190945260168452754346413a20666c6f7772617465206f766572666c6f7760501b9184019190915260808b0151613d7e948d94613d75939290910b919061453f565b6000808f6141a0565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613de49493929091906152cb565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613e2b91815260200190565b60405180910390a25050955095509592505050565b613e48614621565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec09190615201565b88965091945092509050828015613ed5575081155b1561409e57613ee48489614402565b93508760c00151811660000361408c576000613f038960c00151614480565b89516040808c015160608d015182516000815260208101909352613f319392309291908e9060448101615303565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a8492613fa09291869164200000000091909114908b90600401615282565b6000604051808303816000875af1158015613fbf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fe791908101906150e4565b604051631fb6491d60e11b81529095503390633f6c923a9061400d908890600401614837565b600060405180830381865afa15801561402a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140529190810190614f13565b955061408460006132476140698c60800151611f4b565b61324c6140798b60e00151611f4b565b8b6101000151614346565b610100870152505b61409b86866101000151614517565b93505b505050935093915050565b600080821215611fb55760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016105ec565b60008063ffffffff8316614110576000614113565b60015b60ff16905060206141268285831c61535c565b901b9392505050565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b8160008151811061299957612999614e21565b6000806141ad88886117e8565b91505060008160200151600b0b6141cd836000015186612ec9919061509f565b6141d79190614c91565b905080156142425760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561422957600080fd5b505af115801561423d573d6000803e3d6000fd5b505050505b61428c87604051806040016040528060168152602001754346413a20666c6f7772617465206f766572666c6f7760501b8152508460200151600b0b61459b9092919063ffffffff16565b600b0b602083015283825260408201516142ab908790612f1390611f4b565b604083015260608201516142c4908690612f1390611f4b565b60608301526001600160a01b03891663090c415e8960006142e48661412f565b6040518463ffffffff1660e01b815260040161430293929190615374565b600060405180830381600087803b15801561431c57600080fd5b505af1158015614330573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b600081831361383057816108c0565b600081831361436457826108c0565b50919050565b600083600b0b60000361437f575060006108c0565b83600b0b6000191480156143a35750600b83900b6b7fffffffffffffffffffffff19145b1582906143c35760405162461bcd60e51b81526004016105ec9190614837565b50838302600b84900b6143d6868361539b565b600b0b1483906143f95760405162461bcd60e51b81526004016105ec9190614837565b50949350505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614439948a946004016153de565b6000604051808303816000875af1158015614458573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c091908101906150e4565b6000640100000000820361449c57506330d9c91560e01b919050565b64040000000082036144b65750630221347d60e61b919050565b64100000000082036144d05750635f9e7d7760e01b919050565b64020000000082036144ea575063d86ed3e560e01b919050565b6408000000008203614504575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906144399086908690600401615423565b6000828403600b84900b821380159061455e575084600b0b81600b0b13155b8061457c5750600084600b0b12801561457c575084600b0b81600b0b135b83906143f95760405162461bcd60e51b81526004016105ec9190614837565b6000838301600b84900b82138015906145ba575084600b0b81600b0b12155b8061457c5750600084600b0b12801561457c575084600b0b81600b0b1283906143f95760405162461bcd60e51b81526004016105ec9190614837565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016146966145f6565b81526020016146a3614621565b905290565b6001600160a01b03811681146107ed57600080fd5b6000806000606084860312156146d257600080fd5b83356146dd816146a8565b925060208401356146ed816146a8565b915060408401356146fd816146a8565b809150509250925092565b6000806040838503121561471b57600080fd5b8235614726816146a8565b946020939093013593505050565b60008083601f84011261474657600080fd5b50813567ffffffffffffffff81111561475e57600080fd5b6020830191508360208285010111156115f757600080fd5b6000806000806060858703121561478c57600080fd5b8435614797816146a8565b935060208501356147a7816146a8565b9250604085013567ffffffffffffffff8111156147c357600080fd5b6147cf87828801614734565b95989497509550505050565b60005b838110156147f65781810151838201526020016147de565b83811115614805576000848401525b50505050565b600081518084526148238160208601602086016147db565b601f01601f19169290920160200192915050565b6020815260006108c0602083018461480b565b6000806040838503121561485d57600080fd5b8235614868816146a8565b91506020830135614878816146a8565b809150509250929050565b8035600b81900b811461451257600080fd5b60008060008060008060a087890312156148ae57600080fd5b86356148b9816146a8565b955060208701356148c9816146a8565b945060408701356148d9816146a8565b93506148e760608801614883565b9250608087013567ffffffffffffffff81111561490357600080fd5b61490f89828a01614734565b979a9699509497509295939492505050565b60006020828403121561493357600080fd5b81356108c0816146a8565b60008060006060848603121561495357600080fd5b833561495e816146a8565b9250602084013561496e816146a8565b929592945050506040919091013590565b60008060008060006080868803121561499757600080fd5b85356149a2816146a8565b945060208601356149b2816146a8565b935060408601356149c2816146a8565b9250606086013567ffffffffffffffff8111156149de57600080fd5b6149ea88828901614734565b969995985093965092949392505050565b600080600080600060808688031215614a1357600080fd5b8535614a1e816146a8565b94506020860135614a2e816146a8565b93506149c260408701614883565b60ff811681146107ed57600080fd5b60008060008060008060a08789031215614a6457600080fd5b8635614a6f816146a8565b95506020870135614a7f816146a8565b945060408701356148d981614a3c565b60008060408385031215614aa257600080fd5b8235614aad816146a8565b9150614abb60208401614883565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600081600b0b83600b0b600081128160016001605f1b031901831281151615614b0557614b05614ac4565b8160016001605f1b03018313811615614b2057614b20614ac4565b5090039392505050565b60208082526021908201527f4346413a20455f4558434545445f464c4f575f524154455f414c4c4f57414e436040820152604560f81b606082015260800190565b600080600060608486031215614b8057600080fd5b8351925060208401519150604084015190509250925092565b8051614512816146a8565b600060208284031215614bb657600080fd5b81516108c0816146a8565b600060208284031215614bd357600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614c0a57815187529582019590820190600101614bee565b509495945050505050565b8281526040602082015260006104c96040830184614bda565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008083128015600160ff1b850184121615614c7057614c70614ac4565b6001600160ff1b0384018313811615614c8b57614c8b614ac4565b50500390565b60006001600160ff1b0381841382841380821686840486111615614cb757614cb7614ac4565b600160ff1b6000871282811687830589121615614cd657614cd6614ac4565b60008712925087820587128484161615614cf257614cf2614ac4565b87850587128184161615614d0857614d08614ac4565b505050929093029392505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614d5057614d50614d16565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614d7f57614d7f614d16565b604052919050565b60006020808385031215614d9a57600080fd5b825167ffffffffffffffff80821115614db257600080fd5b818501915085601f830112614dc657600080fd5b815181811115614dd857614dd8614d16565b8060051b9150614de9848301614d56565b8181529183018401918481019088841115614e0357600080fd5b938501935b83851015610ce857845182529385019390850190614e08565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614e5c57614e5c614e37565b500490565b8051801515811461451257600080fd5b600060208284031215614e8357600080fd5b6108c082614e61565b805161451281614a3c565b80516001600160e01b03198116811461451257600080fd5b600082601f830112614ec057600080fd5b815167ffffffffffffffff811115614eda57614eda614d16565b614eed601f8201601f1916602001614d56565b818152846020838601011115614f0257600080fd5b6104c98260208301602087016147db565b600060208284031215614f2557600080fd5b815167ffffffffffffffff80821115614f3d57600080fd5b908301906101608286031215614f5257600080fd5b614f5a614d2c565b614f6383614e8c565b8152614f7160208401614e8c565b602082015260408301516040820152614f8c60608401614b99565b6060820152614f9d60808401614e97565b608082015260a083015182811115614fb457600080fd5b614fc087828601614eaf565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150614ff7828401614b99565b82820152610140915061500b828401614b99565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600080821280156001600160ff1b038490038513161561505257615052614ac4565b600160ff1b839003841281161561506b5761506b614ac4565b50500190565b60008261508057615080614e37565b600160ff1b82146000198414161561509a5761509a614ac4565b500590565b6000828210156150b1576150b1614ac4565b500390565b6060815260006150c9606083018661480b565b6001600160a01b039490941660208301525060400152919050565b6000602082840312156150f657600080fd5b815167ffffffffffffffff81111561510d57600080fd5b6104c984828501614eaf565b634e487b7160e01b600052600160045260246000fd5b600081600019048311821515161561514957615149614ac4565b500290565b600060ff821660ff84168060ff0382111561516b5761516b614ac4565b019392505050565b606081526000615186606083018661480b565b60208301949094525060400152919050565b6000600160ff1b82016151ad576151ad614ac4565b5060000390565b87815260e0602082015260006151cd60e083018961480b565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b60008060006060848603121561521657600080fd5b61521f84614e61565b925061522d60208501614e61565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152709083018561480b565b8281036080840152610ce8818561480b565b6001600160a01b03851681526080602082018190526000906152a69083018661480b565b841515604084015282810360608401526152c0818561480b565b979650505050505050565b84600b0b815283600b0b602082015282600b0b60408201526080606082015260006152f9608083018461480b565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906153369083018661480b565b8281036080840152615348818661480b565b905082810360a084015261136c818561480b565b6000821982111561536f5761536f614ac4565b500190565b60018060a01b03841681528260208201526060604082015260006104e26060830184614bda565b600081600b0b83600b0b806153b2576153b2614e37565b6b7fffffffffffffffffffffff198214600019821416156153d5576153d5614ac4565b90059392505050565b60a0815260006153f160a083018861480b565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b604081526000615436604083018561480b565b9050826020830152939250505056fea2646970667358221220679914ce9f0a7c8f58431f872c89eddff315ff89480cf97f7fa16f98d510374664736f6c634300080d0033",
904
904
  "immutableReferences": {
905
905
  "4332": [
906
906
  {
@@ -29932,7 +29932,7 @@
29932
29932
  16378,
29933
29933
  4375,
29934
29934
  17266,
29935
- 35197,
29935
+ 35200,
29936
29936
  762
29937
29937
  ],
29938
29938
  "name": "ConstantFlowAgreementV1",
@@ -79814,7 +79814,7 @@
79814
79814
  },
79815
79815
  "networks": {},
79816
79816
  "schemaVersion": "3.4.7",
79817
- "updatedAt": "2022-05-12T12:56:06.430Z",
79817
+ "updatedAt": "2022-05-19T15:01:21.067Z",
79818
79818
  "devdoc": {
79819
79819
  "author": "Superfluid",
79820
79820
  "details": "Please read IConstantFlowAgreementV1 for implementation notes.For more technical notes, please visit protocol-monorepo wiki area.",